SQL 查询语言及其使用

# a. 查询数据库
show databases; # 查看所有数据库 
show create database mydb1; # 查询数据库的创建语句 
# b. 创建数据库
# create database [if not exists] db_name [specification];

# 练习1:创建一个名称为mydb1的数据库。
create database mydb1;

# 练习2:创建一个使用gbk字符集的mydb2数据库
# create database mydb1 character set gbk;
# create database if not exists mydb1 character set gbk;
create database if not exists mydb2 character set gbk;

# 练习3:创建一个使用gbk字符集,并带校对规则(gbk_bin)的mydb3数据库。
create database mydb3 character set gbk collate gbk_bin;
# c. 删除数据库 
# 语法:drop database [if exists] db_name
# 练习:删除前面创建的mydb3数据库
# drop database mydb3;
drop database if exists mydb3;

# d. 修改数据库 
# 语法:alter database db_name [specificaton]
# 练习:把mydb2的字符集修改为utf8
alter database mydb2 character set utf8;

如果表的字符集和校对规则没指定,就默认为数据库的字符集和校对规则

# a. 查看表
	show tables; # 查看数据库中所有的表
    show create table t_user; # 查看表的定义语句
    # describe/desc t_user; # 查看表的结构
    desc t_user;
# b. 创建表 
# 语法:
-- create table tb_name (
-- 	   field1 datatype,
--     field2 datatype,
--     field3 datatype
-- )[specifications]

use mydb1;
# 练习:创建user(id, name, password, birthday)
create table t_user (
	id int,
    name varchar(255),
    password varchar(20),
    birthday date
);

# 增加列
# 语法:alter table tb_name add column column_name datatype [, add column_name datatype, ...]
# 练习1:添加gender列
alter table t_user add column gender varchar(10);
# 练习2:在password后面添加balance列
alter table t_user add column balance int after password;
# 练习3:在最前面添加no列
alter table t_user add column no int first;
# 练习4:添加a, b列 
alter table t_user add column a int, add column b int;

# 修改列
# 修改列的名字
# 语法:alter table tb_name change column col_name new_col_name datatype [specification];
# 练习:把balance的名字改成salary
alter table t_user change column balance salary int;

# 修改列的定义
# 语法:alter table tb_name modify column col_name datatype [specification];
# 练习:把salary的类型改成decimal(10,2)
alter table t_user modify column salary decimal(10,2);

# 删除列 
# 语法:alter table tb_name drop column col_name;
# 练习:删除a列
alter table t_user drop column a;

# 练习:删除b列, 把gender的类型改成bit(1), 在name的后面添加c列
alter table t_user drop column b, modify column gender bit(1), add column c int after name;
desc t_user;

# 修改表的名字, 迁移表
# 语法: rename table tb_name to new_tb_name;
rename table t_user to user;
# show tables;
# show databases;
# 练习:把mydb1中的user迁移到mydb2,并且重命名为t_user;
rename table user to mydb2.t_user;
show tables;
show tables in mydb2;

# 修改表的字符集
# 语法:alter table character set charset_name
rename table mydb2.t_user to t_user;
show create table t_user;
# 练习:把t_user的字符集改成gbk
alter table t_user char set gbk;
# d.删除表 
# 语法:drop table tb_name;
drop table t_user;
drop table if exists t_user;

# 1) datetime的默认值是null, timestamp的默认值是now()
create database day17;
use day17;
create table t_time(
	a datetime,
    b timestamp
);
insert into t_time (a) values (now());
insert into t_time (b) values (now());
select * from t_time;
# 2) datetime的值与时区无关, timestamp的值会随着时区的改变而改变。
set time_zone = '+10:00';
select * from t_time;
set time_zone = '+8:00';
select * from t_time;

# c.字符串类型
# char(M), varchar(M), tinytext, text, mediumntext, longtext, enum, set
# char(M): M个字节 
# varchar(M): L+1个字节(L字符的长度)
# enum: 如果enum有非空约束,那么它的默认值是定义时的第一个元素。 
create table t_enum (
	gender enum('male', 'female') not null,
    hobby  enum('a', 'b', 'c', 'd') 
);
insert into t_enum (gender) values ('female');
insert into t_enum (hobby) values ('a');
select * from t_enum;

insert into t_enum (hobby) values (null);
insert into t_enum (hobby) values ('x');
insert into t_enum (hobby) values ('ab');

create table t_set (
	hobby set('a', 'b', 'c', 'd')
);
insert into t_set values ('a'); # Y
insert into t_set values ('x'); # N
insert into t_set values ('a,b,d'); # Y
insert into t_set values ('a,,b,x'); # N
insert into t_set values ('c,a,d'); # Y
select * from t_set;

注意上面这个set类型的

# a. 插入
# 语法:insert into tb_name [(column [, column...])] values (val, [val, ...])
create table t_user (
	id int,
    name varchar(20),
    age int,
    gender enum('male', 'female')
);
insert into t_user values (1, 'thomas_he', 18, 'male');
insert into t_user (name, id) values ('茜茜', 2);
insert into t_user (id, name, age) values (3, '张三', 30), (4, '李四', 40);

create table user (
	id int,
    name varchar(20),
    age int,
    gender enum('male', 'female')
);
#**********************************************************
insert into user (select * from t_user);
#**********************************************************
select * from user;

# 注意事项:如果没有where子句就会更新所有行 
# 练习1: 把t_user表中所有人的年龄改为18
update t_user set age=18;
select * from t_user;
# 练习2:把名字为茜茜的用户的年龄改为16, 性别改成female
update t_user set age=16, gender='female' where name='茜茜';
select * from t_user;

# c. 删除
# 语法:delete from tb_name [where 子句]
# 注意事项:
# 1) 删除的基本单位时记录, 如果不想删除记录而只是想删除这条记录某个字段的值, 我们可以用update将该字段置为null
# 2) 如果没有where子句,就会删除表中所有的记录
# 3) delete只会删除记录,不会删除表。如果要删除表,可以使用drop table
# 练习1:删除名字为张三的记录
delete from t_user where name='张三';
select * from t_user;
# 练习2:清空t_user表中的所有记录
delete from t_user;
select * from t_user;
show tables;
desc t_user;

猜你喜欢

转载自blog.csdn.net/weixin_41988545/article/details/106408355
今日推荐