今天给伙伴们分享一下MySQL数据库 - MySQL 实例操作,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
1、创建表
1、语法
create table 表名(
字段名 列类型 [可选的参数], # 记住加逗号
字段名 列类型 [可选的参数], # 记住加逗号
字段名 列类型 [可选的参数] # 最后一行不加逗号
)charset=utf8; # 后面加分号
2、列约束
- auto_increment : 自增 1
- primary key : 主键索引,加快查询速度, 列的值不能重复
- NOT NULL 标识该字段不能为空
- DEFAULT 为该字段设置默认值
3、实例
mysql> create table slt(
num int auto_increment primary key,
name char(10),
job char(10),
age int,
salary int,
descrip char(128)not null default ''
)charset=utf8;
2、查看表结构
mysql> desc slt;
+---------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------+------+-----+---------+----------------+
| num | int(11) | NO | PRI | NULL | auto_increment |
| name | char(10) | YES | | NULL | |
| job | char(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | int(11) | YES | | NULL | |
| descrip | char(128) | NO | | | |
+---------+-----------+------+-----+---------+----------------+
6 rows in set (0.02 sec)
此时表数据为空
mysql> select * from slt;
edenluoty set (0.00 sec)
3、插入数据
1、语法
insert into 表名 (列1, 列2) values (值1,'值2');
2、 实例
mysql> insert into slt(name, job, age, salary,descrip) values
('Tom','teacher',30,20000,'level2'),
('frank','teacher',31,21000,'level2'),
('jack','teacher',32,22000,'level2'),
('jhon','asistant',23,8000,'level3'),
('hugo','manager',45,30000,'level4'),
('jinhisan','teacher',26,9000,'level1')
;
Query OK, 6 row affected (0.01 sec)
4、数据查询
1、语法:
select 列1, 列2 from 表名; (*代表查询所有的列)
1、查看岗位是 teacher 的员工姓名、年龄
mysql> select distinct name, age from slt where job='teacher';
2、查看岗位是teacher且年龄大于30岁的员工姓名、年龄
mysql> select distinct name, age from slt where job='teacher' and age>30;
3、查看岗位是 teacher且薪资在1000-9000范围内的员工姓名、年龄、薪资
mysql> select distinct name, age, salary from slt where job='teacher' and (salary>1000 and salary<9000);
4、查看岗位描述不为NULL的员工信息
mysql> select * from slt where descrip!=NULL ;
5、查看岗位是teacher且薪资是10000或9000或30000的员工姓名、年龄、薪资
mysql> select distinct name, age, salary from slt where job='teacher' and (salary=10000 or salary=9000 or salary=30000);
6、查看岗位是teacher且薪资不是10000或9000或30000的员工姓名、年龄、薪资
mysql> select distinct name, age, salary from slt where job='teacher' and (salary not in (10000,9000,30000));
7、查看岗位是teacher且名字是’jin’开始的员工姓名、年薪
mysql> select * from slt where job='teacher' and name like 'jin%' ;
2、实例
例子1:
创建表:
mysql> create table t1(
id int,
name char(5)
)charset=utf8;
Query OK, 0 rows affected (0.72 sec) # 如果回显是queryok,代表创建成功
插入数据:
mysql> insert into t1 (id, name) values (1, 'edenluo');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+------+-------+
| id | name |
+------+-------+
| 1 | edenluo |
+------+-------+
1 row in set (0.00 sec)
例子2:
mysql> create table t2(
id int auto_increment primary key,
name char(10)
)charset=utf8;
mysql> insert into t2 (name) values ('edenluo1');
例子3: (推荐)
mysql> create table t3(
id int unsigned auto_increment primary key,
name char(10) not null default 'xxx',
age int not null default 0
)charset=utf8;
mysql> insert into t3 (age) values (10);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t3;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | xxx | 10 |
+----+------+-----+
1 row in set (0.00 sec)
5,修改表
1、修改表名
1、语法
ALTER TABLE 旧表名 RENAME 新表名;
2、实例
mysql> alter table t3 rename t4;
Query OK, 0 rows affected (0.19 sec)
2、增加字段
1、添加到最后语法
ALTER TABLE 表名
ADD 字段名 列类型 [可选的参数],
ADD 字段名 列类型 [可选的参数];
实例
mysql> create table t88(
id int,
age int
)charset=utf8;
mysql> alter table t88 add name varchar(32) not null default '';
Query OK, 0 rows affected (0.82 sec)
Records: 0 Duplicates: 0 Warnings: 0
上面添加的列永远是添加在最后一列之后,还可以添加到最前面
2、添加到开头语法
ALTER TABLE 表名
ADD 字段名 列类型 [可选的参数] FIRST;
实例
mysql> alter table t88 add name3 varchar(32) not null default '' first;
Query OK, 0 rows affected (0.83 sec)
Records: 0 Duplicates: 0 Warnings: 0
3、添加到指定字段后面
ALTER TABLE 表名
ADD 字段名 列类型 [可选的参数] AFTER 字段名;
实例
mysql> alter table t88 add name4 varchar(32) not null default '' after name;
Query OK, 0 rows affected (0.68 sec)
Records: 0 Duplicates: 0 Warnings: 0
3、删除字段
1、语法
ALTER TABLE 表名 DROP 字段名;
2、实例
mysql> alter table t88 drop name4;
Query OK, 0 rows affected (0.66 sec)
Records: 0 Duplicates: 0 Warnings: 0
4、修改字段
1、语法
ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
2、实例
mysql> alter table t88 modify name char(20);
Query OK, 1 row affected (0.88 sec)
Records: 1 Duplicates: 0 Warnings: 0
3、语法2
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
4、实例2
mysql> alter table t88 change name name2 varchar(32) not null default '';
Query OK, 1 row affected (0.82 sec)
Records: 1 Duplicates: 0 Warnings: 0
6、删除表
1、语法
drop table 表名; # 线上禁用
2、实例
mysql> drop table t9;
Query OK, 0 rows affected (0.18 sec)
7、查询表
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1 |
+----------------+
1 row in set (0.00 sec)
8、复制表结构
mysql> create table t8 like t1;
Query OK, 0 rows affected (0.33 sec)
9、操作表数据行
1、增加数据
1、语法
insert into 表名 (列1, 列2) values (值1,'值2');
2、实例
# 暴力复制
mysql> insert into t1 (name) select name from t8;
Query OK, 4 rows affected (0.09 sec)
Records: 4 Duplicates: 0 Warnings: 0
2、删除数据
1、delete from 表名 where 条件;
mysql> insert into t1 (id, name) values (1, 'qf1');
mysql> insert into t1 (id, name) values (2, 'qf2');
mysql> insert into t1 (id, name) values (3, 'qf3');
mysql> insert into t1 (id, name) values (4, 'qf4');
mysql> delete from t1 where id=1;
mysql> delete from t1 where id>1;
mysql> delete from t1 where id>=1;
mysql> delete from t1 where id<1;
mysql> delete from t1 where id<=1;
mysql> delete from t1 where id>=1 and id<10;
Query OK, 1 row affected (0.06 sec)
2、truncate 表名; # 没有where条件的
mysql> truncate t1;
Query OK, 0 rows affected (0.25 sec)
mysql> select * from t1;
Empty set (0.00 sec)
mysql> insert into t1 (id, name) values (1, 'qf1');
Query OK, 1 row affected (0.06 sec)
mysql> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | qf1 |
+------+------+
1 row in set (0.00 sec)
3、区别
-
delete 之后,插入数据从上一次主键自增加1开始, truncate则是从1开始
-
delete 删除, 是一行一行的删除, truncate:全选删除 truncate删除的速度是高于delete的
10、修改数据
1、语法
update 表名 set 列名1=新值1,列名2=新值2 where 条件;
2、实例
mysql> insert into t1 (id, name) values (1, 'qf1');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 (id, name) values (2, 'qf2');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 (id, name) values (3, 'qf3');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 (id, name) values (4, &#