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> /// 《小白学程序》第十五课:随机数(Random)第二,统计学初步,数据统计的计算方法与代码 /// 用随机数做简单的统计并用图形显示统计结果。 /// </summary> /// <param name&q…...
C# 子类如何访问子类的方法(同一父类)
在继承关系中,子类可以通过创建另一个子类的对象来访问其方法。下面是一个示例,展示了子类如何访问另一个子类的方法: public class Animal {public virtual void Speak(){Console.WriteLine("我是动物。");} }public class Cat :…...
《Docker 容器化的艺术:深入理解容器技术》
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: 📚…...
gitlab配置hook,commit message的时候校验提交的信息
在 GitLab 中配置 Webhook 来调用 Java 接口以校验 commit 信息,是很多公司的一些要求,因为提交信息的规范化是必要的 不阻止commit的版本 在 GitLab 项目中进入设置页面。 在左侧导航栏中选择 “Webhooks”(Web钩子)。 在 We…...
ssh远程管理服务
ssh远程管理服务是什么 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全, 那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务 1)linux远程连接协议&…...
C语言顺序表
文章目录 前言线性表顺序表静态顺序表动态顺序表 接口实现 前言 我们先补一下上篇博客落下的知识点: 首先说一下斐波那契的时间复杂度和空间复杂度: long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; }还是说一下size_t代表的类型是unsi…...
滑动窗口详解
滑动窗口本质其实也是一种双指针算法,只是因为它维护的区间随着遍历的进行在不停变化,所以形象地称为“滑动窗口” 一、⻓度最⼩的⼦数组 题目要求找到满足条件的长度最小的子数组,我们先来想想暴力的做法,再来想想能不能优化&am…...
JAVA -华为真题-分奖金
需求: 公司老板做了一笔大生意,想要给每位员工分配一些奖金,想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序,每个人随机抽取一个数字。按照工号的顺序往后排列,遇到第一个数字比自己数字大的,那么…...
第二章: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程序 这里的打包是打包整个项目,后期等学会怎么打包单个指定的mapreduce程序再来更新博客。 1、编译打包 …...
微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)
介绍 希望入门D365的同学们,需要具备的知识点,涉及C#,WebApi,前端知识,Power Platform等知识,以及Azure的知识点等,需要有了解。 实施Microsoft Dynamics 365 CE (12章)…...
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、计数器 代码: //计数器 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运算的结果(1࿰…...
2023-09-12力扣每日一题
链接: 1462. 课程表 IV 题意 一个pair<int,int>表示a是b的前置 进行n次查询,查询q是否是p的前置(可以不是直接前置) 解: 就是要把01、12、13这种能转换出02、03,弗洛伊德即可 无环无负权 实际…...
leetcode面试题:交换和(三种方法实现)
交换和: 给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元…...
前端可视化界面开发技术:实战与优化
引言 在当今的互联网时代,数据可视化已经成为信息展示和交互的重要方式。特别是在前端开发领域,可视化界面的应用越来越广泛,涉及到数据监控、分析和决策等多种场景。本文将深入探讨前端可视化界面开发的关键技术,通过实例解析提…...
Python实现机器学习(下)— 数据预处理、模型训练和模型评估
前言:Hello大家好,我是小哥谈。本门课程将介绍人工智能相关概念,重点讲解机器学习原理机器基本算法(监督学习及非监督学习)。使用python,结合sklearn、Pycharm进行编程,介绍iris(鸢尾…...
树结构处理,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设计)
下载使用可视化大屏设计模板,减少重复性操作,提高报表制作效率的同时也确保了报表风格一致,凸显关键数据信息。 软件:奥威BI系统,又称奥威BI数据可视化工具 所属功能板块:主题皮肤上传下载(数…...
Spring Boot + Vue的网上商城之客服系统实现
Spring Boot Vue的网上商城之客服系统实现 在网上商城中,客服系统是非常重要的一部分,它能够为用户提供及时的咨询和解答问题的服务。本文将介绍如何使用Spring Boot和Vue.js构建一个简单的网上商城客服系统。 思路 在本教程中,我们学习了…...
RabbitMQ: return机制
1. Return机制 Confirm只能保证消息到达exchange,无法保证消息可以被exchange分发到指定queue。 而且exchange是不能持久化消息的,queue是可以持久化消息。 采用Return机制来监听消息是否从exchange送到了指定的queue中 2.Java的实现方式 1.导入依赖 &l…...
记录一些奇怪的报错
错误:AttributeError: module distutils has no attribute version 解决方案: 第一步:pip uninstall setuptools 第二步:conda install setuptools58.0.4 错误:ModuleNotFoundError: No module named _distutils_hac…...
做网站视频是什么专业/西安关键词优化服务
问两个trancation事务声明的方法t1和t2,这时候t1调用t2,t2起作用吗? 答:不起作用,对于t2来说事务失效 如何让其不失效? 答案:通过代理去调t2中的方法,原理和代理模式一样 (Servi…...
西安免费做网站公司/宁波seo快速优化课程
https://blog.csdn.net/qq_36667170/article/details/79341379...
温州网站制作策划/百度信息流广告推广
错误和异常的区别(Error vs Exception)参考文章: (1)错误和异常的区别(Error vs Exception) (2)https://www.cnblogs.com/with-wang/archive/2012/03/24/java_doc_3.html 备忘一下。...
jsp个人网站设计/百度搜索排名机制
腾讯面试复盘,总结了一下,面试总共是问了七个方面的问题(仅仅是个人面试经历,后台开发岗),包含:数据库、数据结构、JVM、网络、JAVA、分布式、操作系统等七个模块,下面就给大家介绍一…...
平面广告设计作品集/网站seo是什么意思
需求:做这个项目之前需要用到一个java的webservice接口,首先想到的第一种方法就是添加服务引用了.但是这样的话会有一个config文件 生成的dll必须要读取config文件,config文件放到同一目录也不行的,需要放到另一个工具的节点中才能被另外一个工具读取,不幸的是另外一个工具不能…...
广州邮局网站/宁波seo公司网站推广
Input fields Java代码 RowMetaInterface inputRowMeta getInputRowMeta(); inputRowMeta对象包含了输入行的元数据,包括域、数据类型、长度、名字、格式等等。例如,查找名字为"customer"的域,可以采用如下方式: Ja…...