MySQL数据库 - MySQL 实例操作看了就上手

今天给伙伴们分享一下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, &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘嫣慕曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值