当前位置: 首页 > news >正文

Linux学习之MySQL建表

MySQL查询1 MySQL查询2

表管理

#1. 建库#1)库名命名规则仅可以使用数字、字母、下划线、不能纯数字,区分字母大小写,具有唯一性,不可使用MySQL命令或特殊字符#创建数据表时可以查看一下默认的字符集,8.0后创建数据库和表时默认字符集utf8mb4,5.7之前使用的是latin1,数据库默认编码不设置的话会使用server的字符集,
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8mb3                    |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)//库名区分字母大小写
mysql> create database gamedb ;
Query OK, 1 row affected (0.14 sec)
mysql> create database GAMEDB ;
Query OK, 1 row affected (0.08 sec)
mysql> create database GAMEDB ;  
ERROR 1007 (HY000): Can't create database 'GAMEDB'; database exists //重名报错
//加if not exists 命令避免重名报错
mysql> create database  if not exists  gamedb ;  
Query OK, 1 row affected, 1 warning (0.03 sec) //正常
mysql> show  databases; //查看创建的库
+--------------------+
| Database           |
+--------------------+
| GAMEDB             |
| gamedb             |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| tarena             |
+--------------------+
7 rows in set (0.00 sec)
mysql> drop database gamedb;  //删除库
Query OK, 0 rows affected (0.11 sec)
mysql> drop database gamedb; // 删除没有的库报错
ERROR 1008 (HY000): Can’t drop database ‘gamedb’; database doesn’t exist
//加if exists 删除没有的库,也不报错
mysql> drop database if exists gamedb;
Query OK, 0 rows affected, 1 warning (0.00 sec)
# 查看建库语句
mysql> create database studb;
Query OK, 1 row affected (0.10 sec)mysql> use studb;
Database changed
mysql> show create database studb;
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                                   |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| student  | CREATE DATABASE `studb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
#2. 建表
mysql> create table stuinfo(name char(10),grade char(9),sex char(4),age int);
Query OK, 0 rows affected (0.94 sec)
#查看建表语句,COLLATE表示排序规则
mysql> show create table stuinfo;
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                       |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stuinfo | CREATE TABLE `stuinfo` (`name` char(10) DEFAULT NULL,`grade` char(9) DEFAULT NULL,`sex` char(4) DEFAULT NULL,`age` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
# 查看表结构信息
mysql> desc stuinfo;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| grade | char(9)  | YES  |     | NULL    |       |
| sex   | char(4)  | YES  |     | NULL    |       |
| age   | int      | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
# 删除表
mysql> drop table stuinfo;
Query OK, 0 rows affected (0.37 sec)
# 删除库
mysql> drop database student;
Query OK, 0 rows affected (0.18 sec)
#3. 修改表# 修改表名
mysql> alter table studb.stuinfo rename studb.student;
Query OK, 0 rows affected (0.31 sec)
# 查看数据库中包含哪些表
mysql> show tables;
+-----------------+
| Tables_in_studb |
+-----------------+
| student         |
+-----------------+
1 row in set (0.00 sec)
# 删除age表头
mysql> alter table studb.student drop age;
Query OK, 0 rows affected (0.84 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| grade | char(9)  | YES  |     | NULL    |       |
| sex   | char(4)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)
# 添加表头,默认添加在末尾
mysql> alter table studb.student add mail char(30);
Query OK, 0 rows affected (0.30 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| grade | char(9)  | YES  |     | NULL    |       |
| sex   | char(4)  | YES  |     | NULL    |       |
| mail  | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
# first指定添加列到行首,after 添加至指定表头名的下方
mysql> alter table studb.student add number char(30) first ;
Query OK, 0 rows affected (0.79 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(30) | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| grade  | char(9)  | YES  |     | NULL    |       |
| sex    | char(4)  | YES  |     | NULL    |       |
| mail   | char(30) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> alter table studb.student add num1 char(30) after sex ;
Query OK, 0 rows affected (1.21 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(30) | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| grade  | char(9)  | YES  |     | NULL    |       |
| sex    | char(4)  | YES  |     | NULL    |       |
| num1   | char(30) | YES  |     | NULL    |       |
| mail   | char(30) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)
# 修改表头数据类型
mysql> alter table studb.student modify mail char(50);
Query OK, 0 rows affected (1.91 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(30) | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| grade  | char(9)  | YES  |     | NULL    |       |
| sex    | char(4)  | YES  |     | NULL    |       |
| num1   | char(30) | YES  |     | NULL    |       |
| mail   | char(50) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)
# 修改表头名
mysql> alter table studb.student change mail 邮箱 char(50);
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(30) | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| grade  | char(9)  | YES  |     | NULL    |       |
| sex    | char(4)  | YES  |     | NULL    |       |
| num1   | char(30) | YES  |     | NULL    |       |
| 邮箱   | char(50) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)
#删除多个表头
mysql> alter table studb.student drop num1,drop grade;
Query OK, 0 rows affected (0.86 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(30) | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| sex    | char(4)  | YES  |     | NULL    |       |
| 邮箱   | char(50) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
# 通过modify修改表头位置
mysql> alter table studb.student modify sex char(4) after number;
Query OK, 0 rows affected (1.53 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc studb.student;
+--------+----------+------+-----+---------+-------+
| Field  | Type     | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| number | char(30) | YES  |     | NULL    |       |
| sex    | char(4)  | YES  |     | NULL    |       |
| name   | char(10) | YES  |     | NULL    |       |
| 邮箱   | char(50) | YES  |     | NULL    |       |
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
# 复制表并将表内数据复制过来
mysql> create table studb.departments select * from tarena.departments;
Query OK, 11 rows affected (0.73 sec)
Records: 11  Duplicates: 0  Warnings: 0mysql> desc studb.departments;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| dept_id   | int         | NO   |     | 0       |       |
| dept_name | varchar(10) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> select count(*) from studb.departments;
+----------+
| count(*) |
+----------+
|       11 |
+----------+
1 row in set (0.00 sec)mysql> select count(*) from tarena.departments;
+----------+
| count(*) |
+----------+
|       11 |
+----------+
1 row in set (0.00 sec)

数据类型

# 1. 字符类型
mysql> create table studb.t2(name char(3),address varchar(5));
Query OK, 0 rows affected (0.68 sec)mysql> desc studb.t2;
+---------+------------+------+-----+---------+-------+
| Field   | Type       | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+-------+
| name    | char(3)    | YES  |     | NULL    |       |
| address | varchar(5) | YES  |     | NULL    |       |
+---------+------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql> insert into studb.t2 values('a','a');
Query OK, 1 row affected (0.12 sec)
mysql> insert into studb.t2 values('abc','abc');
Query OK, 1 row affected (0.10 sec)
# name定义为char(3),只能存储3个[字符],所以报错数据太长了
mysql> insert into studb.t2 values('abcd','abcd');
ERROR 1406 (22001): Data too long for column 'name' at row 1
#mysql8.0使用了utf8mb4字符集,默认支持中文
mysql> insert into studb.t2 values("张无忌","武当山");
Query OK, 1 row affected (0.10 sec)
mysql> select * from studb.t2;
+-----------+-----------+
| name      | address   |
+-----------+-----------+
| a         | a         |
| ab        | ab        |
| abc       | abc       |
| 张无忌    | 武当山    |
+-----------+-----------+
4 rows in set (0.00 sec)
# 2. 数值类型
mysql> create table studb.t1(name char(10),level tinyint unsigned,money double);
Query OK, 0 rows affected (0.59 sec)mysql> desc studb.t1;
+-------+------------------+------+-----+---------+-------+
| Field | Type             | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| name  | char(10)         | YES  |     | NULL    |       |
| level | tinyint unsigned | YES  |     | NULL    |       |
| money | double           | YES  |     | NULL    |       |
+-------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
# tinyint unsigned表示无符号短整型,占用1个字节,只能存储0-255的数字
mysql> insert into studb.t1 values("战士",301,1.292);
ERROR 1264 (22003): Out of range value for column 'level' at row 1
mysql> insert into studb.t1 values("战士",255,1.292);
Query OK, 1 row affected (0.10 sec)
#整型不能存储不数,直接对小数进行四舍五入
mysql> insert into studb.t1 values("英雄",1.222,1.292);
Query OK, 1 row affected (0.08 sec)mysql> select * from studb.t1;
+--------+-------+-------+
| name   | level | money |
+--------+-------+-------+
| 法师   |    80 |    88 |
| 战士   |   255 | 1.292 |
| 英雄   |     1 | 1.292 |
+--------+-------+-------+
3 rows in set (0.00 sec)
# 3. 枚举类型
mysql> create table studb.t8( name char(10),sex enum("男","女","保密"),hobby set("美女","吃","睡"));
Query OK, 0 rows affected (0.60 sec)mysql> desc studb.t8;
+-------+----------------------------+------+-----+---------+-------+
| Field | Type                       | Null | Key | Default | Extra |
+-------+----------------------------+------+-----+---------+-------+
| name  | char(10)                   | YES  |     | NULL    |       |
| sex   | enum('男','女','保密')     | YES  |     | NULL    |       |
| hobby | set('美女','吃','睡')      | YES  |     | NULL    |       |
+-------+----------------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
# enum类型的数据只能选择其中一项,set类型的数据可以选择其中多项
mysql> insert into studb.t8 values("小迪总","男人","美女,睡,金钱");
ERROR 1265 (01000): Data truncated for column 'sex' at row 1
mysql> insert into studb.t8 values("小迪总","男","美女,睡,金钱");
ERROR 1265 (01000): Data truncated for column 'hobby' at row 1
mysql> insert into studb.t8 values("小迪总","男","美女,睡,吃");
Query OK, 1 row affected (0.12 sec)
mysql> select * from studb.t8;
+-----------+------+----------------+
| name      | sex  | hobby          |
+-----------+------+----------------+
| 小迪总    || 美女,,|
+-----------+------+----------------+
1 row in set (0.00 sec)
# 4. 日期时间
mysql> create table studb.t6(name char(10),birth date,year_birth year,homeparty datetime,partyaddress varchar(15),worktime time);
Query OK, 0 rows affected (1.22 sec)mysql> desc studb.t6;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| name         | char(10)    | YES  |     | NULL    |       |
| birth        | date        | YES  |     | NULL    |       |
| year_birth   | year        | YES  |     | NULL    |       |
| homeparty    | datetime    | YES  |     | NULL    |       |
| partyaddress | varchar(15) | YES  |     | NULL    |       |
| worktime     | time        | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
mysql> insert into studb.t6 values("小崔",19900101,1990,20230909090000,"郑州",100000);
Query OK, 1 row affected (0.11 sec)mysql> select * from studb.t6;
+--------+------------+------------+---------------------+--------------+----------+
| name   | birth      | year_birth | homeparty           | partyaddress | worktime |
+--------+------------+------------+---------------------+--------------+----------+
| 小崔   | 1990-01-01 |       1990 | 2023-09-09 09:00:00 | 郑州         | 10:00:00 |
+--------+------------+------------+---------------------+--------------+----------+
1 row in set (0.00 sec)

数据批量处理

# 1.修改检索目录为/myload
# 查看默认检索目录
mysql> show variables like 'secure_file_priv';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.00 sec)
# 此变量是只读变量,只能修改mysql配置文件,在mysqld下面添加一行secure_file_priv=/myload,并创建/myload目录,修改目录属主和属组为mysql,否则重启mysql服务时会报错
[root@mysql50 ~]# cat /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
...
secure_file_priv=/myload
[root@mysql50 ~]# mkdir /myload
[root@mysql50 ~]# chown mysql.mysql /myload
[root@mysql50 ~]# systemctl restart mysqld
# 2.将/etc/passwd文件导入db1库的user3表里,并添加行号字段
#创建库和表
mysql> create database db1;
Query OK, 1 row affected (0.14 sec)
mysql> create table db1.user3(name varchar(30),password char(1),uid int ,gid int,comment varchar(200),homedir varchar(50),shell varchar(30));
Query OK, 0 rows affected (0.80 sec)mysql> desc db1.user3;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name     | varchar(30)  | YES  |     | NULL    |       |
| password | char(1)      | YES  |     | NULL    |       |
| uid      | int          | YES  |     | NULL    |       |
| gid      | int          | YES  |     | NULL    |       |
| comment  | varchar(200) | YES  |     | NULL    |       |
| homedir  | varchar(50)  | YES  |     | NULL    |       |
| shell    | varchar(30)  | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
7 rows in set (0.01 sec)
# 拷贝文件到检索目录 system 在MySQL里执行系统命令
mysql> system cp /etc/passwd /myload/
mysql> system ls /myload
passwd
# 导入数据
mysql> load data infile "/myload/passwd" into table db1.user3 fields terminated by ":" lines terminated by "\n";
Query OK, 25 rows affected (0.13 sec)
Records: 25  Deleted: 0  Skipped: 0  Warnings: 0mysql> select * from db1.user3;
+------------------+----------+-------+-------+-----------------------------+------------------+----------------+
| name             | password | uid   | gid   | comment                     | homedir          | shell          |
+------------------+----------+-------+-------+-----------------------------+------------------+----------------+
| root             | x        |     0 |     0 | root                        | /root            | /bin/bash      |
| bin              | x        |     1 |     1 | bin                         | /bin             | /sbin/nologin  |
| daemon           | x        |     2 |     2 | daemon                      | /sbin            | /sbin/nologin  |
| adm              | x        |     3 |     4 | adm                         | /var/adm         | /sbin/nologin  |
| lp               | x        |     4 |     7 | lp                          | /var/spool/lpd   | /sbin/nologin  |
| sync             | x        |     5 |     0 | sync                        | /sbin            | /bin/sync      |
| shutdown         | x        |     6 |     0 | shutdown                    | /sbin            | /sbin/shutdown |
| halt             | x        |     7 |     0 | halt                        | /sbin            | /sbin/halt     |
| mail             | x        |     8 |    12 | mail                        | /var/spool/mail  | /sbin/nologin  |
| operator         | x        |    11 |     0 | operator                    | /root            | /sbin/nologin  |
| games            | x        |    12 |   100 | games                       | /usr/games       | /sbin/nologin  |
| ftp              | x        |    14 |    50 | FTP User                    | /var/ftp         | /sbin/nologin  |
| nobody           | x        | 65534 | 65534 | Kernel Overflow User        | /                | /sbin/nologin  |
| dbus             | x        |    81 |    81 | System message bus          | /                | /sbin/nologin  |
| systemd-coredump | x        |   999 |   997 | systemd Core Dumper         | /                | /sbin/nologin  |
| systemd-resolve  | x        |   193 |   193 | systemd Resolver            | /                | /sbin/nologin  |
| polkitd          | x        |   998 |   995 | User for polkitd            | /                | /sbin/nologin  |
| unbound          | x        |   997 |   994 | Unbound DNS resolver        | /etc/unbound     | /sbin/nologin  |
| tss              | x        |    59 |    59 | Account used for TPM access | /dev/null        | /sbin/nologin  |
| chrony           | x        |   996 |   993 |                             | /var/lib/chrony  | /sbin/nologin  |
| sshd             | x        |    74 |    74 | Privilege-separated SSH     | /var/empty/sshd  | /sbin/nologin  |
| tcpdump          | x        |    72 |    72 |                             | /                | /sbin/nologin  |
| mysql            | x        |    27 |    27 | MySQL Server                | /var/lib/mysql   | /sbin/nologin  |
| apache           | x        |    48 |    48 | Apache                      | /usr/share/httpd | /sbin/nologin  |
| nginx            | x        |   995 |   992 | Nginx web server            | /var/lib/nginx   | /sbin/nologin  |
+------------------+----------+-------+-------+-----------------------------+------------------+----------------+
25 rows in set (0.00 sec)
# 3.将db1库user3表中所有记录导出,存到/myload/user.txt中
mysql> select * from db1.user3 into outfile "/myload/user.txt";
Query OK, 25 rows affected (0.00 sec)mysql> system ls /myload
passwd  user.txt
mysql> system cat /myload/user.txt
root    x       0       0       root    /root   /bin/bash
bin     x       1       1       bin     /bin    /sbin/nologin
daemon  x       2       2       daemon  /sbin   /sbin/nologin
adm     x       3       4       adm     /var/adm        /sbin/nologin
lp      x       4       7       lp      /var/spool/lpd  /sbin/nologin
sync    x       5       0       sync    /sbin   /bin/sync
shutdown        x       6       0       shutdown        /sbin   /sbin/shutdown
halt    x       7       0       halt    /sbin   /sbin/halt
mail    x       8       12      mail    /var/spool/mail /sbin/nologin
operator        x       11      0       operator        /root   /sbin/nologin
games   x       12      100     games   /usr/games      /sbin/nologin
ftp     x       14      50      FTP User        /var/ftp        /sbin/nologin
nobody  x       65534   65534   Kernel Overflow User    /       /sbin/nologin
dbus    x       81      81      System message bus      /       /sbin/nologin
systemd-coredump        x       999     997     systemd Core Dumper     /       /sbin/nologin
systemd-resolve x       193     193     systemd Resolver        /       /sbin/nologin
polkitd x       998     995     User for polkitd        /       /sbin/nologin
unbound x       997     994     Unbound DNS resolver    /etc/unbound    /sbin/nologin
tss     x       59      59      Account used for TPM access     /dev/null       /sbin/nologin
chrony  x       996     993             /var/lib/chrony /sbin/nologin
sshd    x       74      74      Privilege-separated SSH /var/empty/sshd /sbin/nologin
tcpdump x       72      72              /       /sbin/nologin
mysql   x       27      27      MySQL Server    /var/lib/mysql  /sbin/nologin
apache  x       48      48      Apache  /usr/share/httpd        /sbin/nologin
nginx   x       995     992     Nginx web server        /var/lib/nginx  /sbin/nologin

表头基本约束

约束是一种限制,设置在表头上,用来控制表头的赋值
- NOT NULL:非空,用于保证该字段的值不能为空
- DEFAULT:默认值,用于保证该字段有默认值
- UNIQUE:唯一索引,用于保证该字段的值具有唯一性,可为空
- PRIMARY KEY:主键,用于保证字段的值具有唯一性且非空
- FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表中添加外键约束,用于引用主表中的某些的值# 1.表头不允许赋空值练习
mysql> create table db1.t33(name char(10) not null,grade char(7) default "nsd",likes set("money","game","film","music") not null default "film,music");
Query OK, 0 rows affected (0.64 sec)mysql> desc db1.t33;
+-------+------------------------------------+------+-----+------------+-------+
| Field | Type                               | Null | Key | Default    | Extra |
+-------+------------------------------------+------+-----+------------+-------+
| name  | char(10)                           | NO   |     | NULL       |       |
| grade | char(7)                            | YES  |     | nsd        |       |
| likes | set('money','game','film','music') | NO   |     | film,music |       |
+-------+------------------------------------+------+-----+------------+-------+
3 rows in set (0.00 sec)# 验证默认值和不允许为null
mysql> insert into db1.t33 values(null,null,null);
ERROR 1048 (23000): Column 'name' cannot be null
# 表头likes赋null值,报错
mysql> insert into db1.t33 values("bob",null,null);
ERROR 1048 (23000): Column 'likes' cannot be null
# 符合约束条件不报错
mysql> insert into db1.t33 values("bob",null,"money,game,film");
Query OK, 1 row affected (0.09 sec)
mysql> insert into db1.t33(name) values("lucy");
Query OK, 1 row affected (0.12 sec)
mysql> insert into db1.t33 values("jim","nsd2018","game,film");
Query OK, 1 row affected (0.17 sec)
mysql> select * from db1.t33;
+------+---------+-----------------+
| name | grade   | likes           |
+------+---------+-----------------+
| bob  | NULL    | money,game,film |
| lucy | nsd     | film,music      |
| jim  | nsd2018 | game,film       |
+------+---------+-----------------+
3 rows in set (0.00 sec)
# 2.表头加唯一索引练习
mysql> create table db1.t44(name char(10),passport char(18) unique);
Query OK, 0 rows affected (1.14 sec)mysql> desc db1.t44;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name     | char(10) | YES  |     | NULL    |       |
| passport | char(18) | YES  | UNI | NULL    |       |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)mysql> insert into db1.t44 values("bob",null);
Query OK, 1 row affected (0.13 sec)mysql> insert into db1.t44 values("tom","666888");
Query OK, 1 row affected (0.08 sec)
# 表头值不可以重复
mysql> insert into db1.t44 values("jim","666888");
ERROR 1062 (23000): Duplicate entry '666888' for key 't44.passport'
mysql> insert into db1.t44 values("jim","766888");
Query OK, 1 row affected (0.16 sec)mysql> select * from db1.t44;
+------+----------+
| name | passport |
+------+----------+
| bob  | NULL     |
| tom  | 666888   |
| jim  | 766888   |
+------+----------+
3 rows in set (0.00 sec)

相关文章:

Linux学习之MySQL建表

MySQL查询1 MySQL查询2 表管理 #1. 建库#1)库名命名规则仅可以使用数字、字母、下划线、不能纯数字,区分字母大小写,具有唯一性,不可使用MySQL命令或特殊字符#创建数据表时可以查看一下默认的字符集,8.0后创建数据库…...

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而,作为一个单点服务,Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题,Redis 提供了哨兵模式,一个…...

【zookeeper】zookeeper日常运维

本文将分享一些zookeeper在日常使用中一些维护经验。 zookeeper清理快照 脚本或者命令清理 zookeeper长时间运行,快照逐渐增多可能造成服务器磁盘被占满的情况,但我们不能贸然用rm命令删除快照文件,如果直接删完会导致丢失好多数据&#x…...

【工作记录】MQTT介绍、安装部署及springboot集成@20230912

背景 近期公司可能会有物联网设备相关项目内容,提前对用到的mqtt协议做预研和初步使用。 最初接触到mqtt协议应该是早些年的即时通讯吧,现在已经是物联网设备最热门的协议了。 作为记录,也希望能帮助到需要的朋友。 MQTT介绍 《MQTT 协议规…...

Flask 使用 JWT(一)

下面是一些 JWT 的使用场景: 1、 授权:这是 JWT 最常的使用场景。一旦用户登录,后续的每个请求都必须携带 JWT ,允许用户携带 Token 访问所有的路由、服务器和资源。单点登录时目前使用最广泛的一个场景,因为它开销小并且能够轻易的实现跨域访问。 2、信息交换:JWT Token…...

Oracle(1):Oracle简介

1 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORACLE 数据…...

计算机网络篇之IP地址

计算机网络篇之IP地址 文章目录 计算机网络篇之IP地址概括IPv4地址IPv6地址分配总结 概括 IP地址是计算机网络中用于标识和定位设备的一组数字,IP地址分为IPv4和IPv6两种格式 IPv4地址 IPv4地址是32位的二进制数,通常表示为四个用点分隔的十进制数&am…...

webrtc-m79-测试peerconnectionserver的webclient-p2p-demo

1 背景 webrtc的代码中有peerconnectionclient和peerconnectionserver的例子,但是没有对应的web端的例子,这里简单的写了一个测试例子,具体如下: 2 具体操作 2.1 操作流程 2.2 测试效果 使用webclient与peerconnectionclient的…...

C#,《小白学程序》第十五课:随机数(Random)第二,统计学初步,数据统计的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十五课&#xff1a;随机数&#xff08;Random&#xff09;第二&#xff0c;统计学初步&#xff0c;数据统计的计算方法与代码 /// 用随机数做简单的统计并用图形显示统计结果。 /// </summary> /// <param name&q…...

C# 子类如何访问子类的方法(同一父类)

在继承关系中&#xff0c;子类可以通过创建另一个子类的对象来访问其方法。下面是一个示例&#xff0c;展示了子类如何访问另一个子类的方法&#xff1a; public class Animal {public virtual void Speak(){Console.WriteLine("我是动物。");} }public class Cat :…...

《Docker 容器化的艺术:深入理解容器技术》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…...

gitlab配置hook,commit message的时候校验提交的信息

在 GitLab 中配置 Webhook 来调用 Java 接口以校验 commit 信息&#xff0c;是很多公司的一些要求&#xff0c;因为提交信息的规范化是必要的 不阻止commit的版本 在 GitLab 项目中进入设置页面。 在左侧导航栏中选择 “Webhooks”&#xff08;Web钩子&#xff09;。 在 We…...

ssh远程管理服务

ssh远程管理服务是什么 SSH是一个安全协议&#xff0c;在进行数据传输时&#xff0c;会对数据包进行加密处理&#xff0c;加密后在进行数据传输。确保了数据传输安全, 那SSH服务主要功能有哪些呢&#xff1f; 1.提供远程连接服务器的服务 1&#xff09;linux远程连接协议&…...

C语言顺序表

文章目录 前言线性表顺序表静态顺序表动态顺序表 接口实现 前言 我们先补一下上篇博客落下的知识点&#xff1a; 首先说一下斐波那契的时间复杂度和空间复杂度&#xff1a; long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; }还是说一下size_t代表的类型是unsi…...

滑动窗口详解

滑动窗口本质其实也是一种双指针算法&#xff0c;只是因为它维护的区间随着遍历的进行在不停变化&#xff0c;所以形象地称为“滑动窗口” 一、⻓度最⼩的⼦数组 题目要求找到满足条件的长度最小的子数组&#xff0c;我们先来想想暴力的做法&#xff0c;再来想想能不能优化&am…...

JAVA -华为真题-分奖金

需求: 公司老板做了一笔大生意&#xff0c;想要给每位员工分配一些奖金&#xff0c;想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序&#xff0c;每个人随机抽取一个数字。按照工号的顺序往后排列&#xff0c;遇到第一个数字比自己数字大的&#xff0c;那么&#xf…...

第二章:25+ Python 数据操作教程(第十八节如何使用 Matplotlib 库在 python 中执行绘图和数据可视化)持续更新中

本教程概述了如何使用 Matplotlib 库在 python 中执行绘图和数据可视化。这篇文章的目的是让您熟悉该库的基础知识和高级绘图功能。它包含几个示例,将为您提供使用 Python 生成绘图的实践经验。 目录 什么是 Matplotlib? Matplotlib 基础知识<...

XShell7 + Xftp7 + IDEA 打包MapReduce程序到集群运行

参考博客 【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG IDEA打包MapReduce程序 这里的打包是打包整个项目&#xff0c;后期等学会怎么打包单个指定的mapreduce程序再来更新博客。 1、编译打包 …...

微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)

介绍 希望入门D365的同学们&#xff0c;需要具备的知识点&#xff0c;涉及C#&#xff0c;WebApi&#xff0c;前端知识&#xff0c;Power Platform等知识&#xff0c;以及Azure的知识点等&#xff0c;需要有了解。 实施Microsoft Dynamics 365 CE &#xff08;12章&#xff09;…...

vscode搭建Django自带后台管理系统

文章目录 一、django自带的后台管理系统1. 建表2. 后台管理系统2.1 创建账号2.2 运行后台2.3 登录 二、模版渲染1. 直接将数据渲染到页面2. 数据传递给js 三、数据库1. 查看当前数据库2. 创建UserInfo数据表3. Django rest framework配置 四、vue前端搭建1. 在Django项目的根目…...

Verilog零基础入门(边看边练与测试仿真)-时序逻辑-笔记(4-6讲)

文章目录 第四讲第五讲第六讲 第四讲 1、计数器 代码&#xff1a; //计数器 timescale 1ns/10ps module counter(clk,res,y); input clk; input res; output[7:0] y;reg[7:0] y; wire[7:0] sum;//1运算的结果&#xff08;1&#xff0…...

2023-09-12力扣每日一题

链接&#xff1a; 1462. 课程表 IV 题意 一个pair<int,int>表示a是b的前置 进行n次查询&#xff0c;查询q是否是p的前置&#xff08;可以不是直接前置&#xff09; 解&#xff1a; 就是要把01、12、13这种能转换出02、03&#xff0c;弗洛伊德即可 无环无负权 实际…...

leetcode面试题:交换和(三种方法实现)

交换和&#xff1a; 给定两个整数数组&#xff0c;请交换一对数值&#xff08;每个数组中取一个数值&#xff09;&#xff0c;使得两个数组所有元素的和相等。 返回一个数组&#xff0c;第一个元素是第一个数组中要交换的元素&#xff0c;第二个元素是第二个数组中要交换的元…...

前端可视化界面开发技术:实战与优化

引言 在当今的互联网时代&#xff0c;数据可视化已经成为信息展示和交互的重要方式。特别是在前端开发领域&#xff0c;可视化界面的应用越来越广泛&#xff0c;涉及到数据监控、分析和决策等多种场景。本文将深入探讨前端可视化界面开发的关键技术&#xff0c;通过实例解析提…...

Python实现机器学习(下)— 数据预处理、模型训练和模型评估

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本门课程将介绍人工智能相关概念&#xff0c;重点讲解机器学习原理机器基本算法&#xff08;监督学习及非监督学习&#xff09;。使用python&#xff0c;结合sklearn、Pycharm进行编程&#xff0c;介绍iris&#xff08;鸢尾…...

树结构处理,list和tree互转

1、实体类 package com.iot.common.test.entity;import lombok.Data;import java.util.List;/*** description:* author:zilong* date:2023/9/8*/ Data public class Node {//idprivate String id;//父节点idprivate String pId;//名称private String name;//编码private Stri…...

可视化大屏设计模板 | 主题皮肤(报表UI设计)

下载使用可视化大屏设计模板&#xff0c;减少重复性操作&#xff0c;提高报表制作效率的同时也确保了报表风格一致&#xff0c;凸显关键数据信息。 软件&#xff1a;奥威BI系统&#xff0c;又称奥威BI数据可视化工具 所属功能板块&#xff1a;主题皮肤上传下载&#xff08;数…...

Spring Boot + Vue的网上商城之客服系统实现

Spring Boot Vue的网上商城之客服系统实现 在网上商城中&#xff0c;客服系统是非常重要的一部分&#xff0c;它能够为用户提供及时的咨询和解答问题的服务。本文将介绍如何使用Spring Boot和Vue.js构建一个简单的网上商城客服系统。 思路 在本教程中&#xff0c;我们学习了…...

RabbitMQ: return机制

1. Return机制 Confirm只能保证消息到达exchange&#xff0c;无法保证消息可以被exchange分发到指定queue。 而且exchange是不能持久化消息的&#xff0c;queue是可以持久化消息。 采用Return机制来监听消息是否从exchange送到了指定的queue中 2.Java的实现方式 1.导入依赖 &l…...

记录一些奇怪的报错

错误&#xff1a;AttributeError: module distutils has no attribute version 解决方案&#xff1a; 第一步&#xff1a;pip uninstall setuptools 第二步&#xff1a;conda install setuptools58.0.4 错误&#xff1a;ModuleNotFoundError: No module named _distutils_hac…...

做网站视频是什么专业/西安关键词优化服务

问两个trancation事务声明的方法t1和t2&#xff0c;这时候t1调用t2&#xff0c;t2起作用吗&#xff1f; 答&#xff1a;不起作用&#xff0c;对于t2来说事务失效 如何让其不失效&#xff1f; 答案&#xff1a;通过代理去调t2中的方法&#xff0c;原理和代理模式一样 (Servi…...

西安免费做网站公司/宁波seo快速优化课程

https://blog.csdn.net/qq_36667170/article/details/79341379...

温州网站制作策划/百度信息流广告推广

错误和异常的区别(Error vs Exception)参考文章&#xff1a; &#xff08;1&#xff09;错误和异常的区别(Error vs Exception) &#xff08;2&#xff09;https://www.cnblogs.com/with-wang/archive/2012/03/24/java_doc_3.html 备忘一下。...

jsp个人网站设计/百度搜索排名机制

腾讯面试复盘&#xff0c;总结了一下&#xff0c;面试总共是问了七个方面的问题&#xff08;仅仅是个人面试经历&#xff0c;后台开发岗&#xff09;&#xff0c;包含&#xff1a;数据库、数据结构、JVM、网络、JAVA、分布式、操作系统等七个模块&#xff0c;下面就给大家介绍一…...

平面广告设计作品集/网站seo是什么意思

需求:做这个项目之前需要用到一个java的webservice接口,首先想到的第一种方法就是添加服务引用了.但是这样的话会有一个config文件 生成的dll必须要读取config文件,config文件放到同一目录也不行的,需要放到另一个工具的节点中才能被另外一个工具读取,不幸的是另外一个工具不能…...

广州邮局网站/宁波seo公司网站推广

Input fields Java代码 RowMetaInterface inputRowMeta getInputRowMeta(); inputRowMeta对象包含了输入行的元数据&#xff0c;包括域、数据类型、长度、名字、格式等等。例如&#xff0c;查找名字为"customer"的域&#xff0c;可以采用如下方式&#xff1a; Ja…...