SQL语言操作数据库
SQL语言共分为四大类:
数据定义语言DDL:数据定义语言DDL用来创建数据库中的各种对象-----[库]、[表]、[视图]、[索引]、
数据操纵语言DML:(1) 插入:INSERT (2) 更新:UPDATE (3) 删除:DELETE
数据查询语言DQL:数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
数据控制语言DCL:数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果[了解]
DDL定义数据库
语法: create database if not exists 数据库名 charset utf8
# (1)创建一个班级db_itheima1数据库,且使用默认编码;
create database db_itheima1;
create database if not exists db_itheima1;-- 重复运行不会报错
# (2)创建一个班级db_itheima2数据库,charset设置编码为utf8;
create database db_itheima2 char set utf8;
字符集概念
什么是字符集
字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集有:ASCII字符集、ISO 8859字符集、GB2312字符集、BIG5字符集、GB18030字符集、unicode,GBK,UTF8 字符集等.
为什么要有字符集
因为计算机底层只能存储二进制数字.不能存储任何的字符,因此要使用数字来固定表示某个字符.这样就可以在使用
字符的时候个将数字根据字符集转变成为字符.
DDL查看数据
# 查看有哪些数据库
show databases;
# 查看数据库的创建语句
show create database 数据库名;
DDL删除数据库
drop database 数据库名;
数据类型
1.整数
2.小数
3.字符串
4.时间和日期
DDL创建表
# 创建user表,列有id,user,nickname.
create table if not exists user(
id int,
user varchar(20),
nickname varchar(20)
);
DripGrip中查看
DDL数据表的查看
# (1)查看当前数据库中有哪些数据表;
show tables ;
# (2)查看创建数据表email的创建语句;
show create table email;
# (3)查看数据表email的表结构。
desc email;
DDL删除表
drop table student;-- 删除库中的学生表.
DDL 修改表之添加列
# (2)添加判断语句,新建一张用户表table_user,有用户名、密码这2个字段;
create table table_user(
username varchar(20),
password varchar(20)
);
# (3)给用户表添加一列信息展示information字段,长度为140;
alter table table_user add information varchar(140);-- 默认添加到末尾
# (4)思考1:在用户表的最开始处,添加一列最初名称first_name,该怎么做呢?
alter table table_user add first_name varchar(20) first ;
# (5)思考2:在用户表的密码字段后,添加一列年龄age字段,该怎么做?
alter table table_user add age int after password;
#--查看表详细信息
desc table_user;
DDL修改表之修改列的类型和数据
# (1)给用户表的信息字段类型修改为char,长度修改为60;
alter table table_user modify information varchar(60);
# (2)将用户名字段修改长度为16,且添加不为空约束。
alter table table_user modify username varchar(16) not null ;-- not null 表示非空约束
DDL修改表之修改列名
# (1)把用户表的用户名修改为name,字符串类型、长度为18;
alter table table_user change username name varchar(18);
# (2)把用户表的信息字段列名修改为info,类型修改为varchar,长度为100。
alter table table_user change information info varchar(100);
DDL修改表之删除列
# (1)删除用户表中的年龄这一列;
alter table table_user drop age;
# (2)使用命令查看表结构。
desc table_user;
DDL修改表之修改表名
# (1)把用户表的表名更改为t_user;
rename table table_user to t_user;
# (2)使用命令查看库中所有数据表信息。
show tables;
DML操作
insert插入数据到表
# (2)用户表的字段信息有编号、人物名、性别、住址等;[不添加任何约束条件]
create table user1(
id int,
name varchar(20),
gender varchar(1),
address varchar(20)
);
# (3)使用插入数据的语法分别插入一条数据;
insert into user1 value (1,'张三','男','北京'); -- todo 必须传所有列
insert into user1 values (1,'张三','男'); -- Column count doesn't match value count at row 1
insert into user1 (id,name,gender) values (2,'李四','男');-- todo 可以给部分列传值
# (4)思考1:给所有字段名一次性插入2条数据信息,该怎么做?
insert into user1 values (3,'王五','男','北京'),(4,'赵六','男','北京');
# (5)思考2:给用户表一次性插入仅包含人物名、年龄、性别字段的3条数据,该怎么做?
insert into user1 (id,name,gender) values (5,'钱七','男'),(6,'周八','男'),(7,'龙九','男');
# (6)若发现在性别字段后,还缺少了年龄字段,该怎么处理呢?
alter table user1 add age int;
value和values的区别
1:在MySQL中,value和values都是用于插入数据的关键字,但它们的用法和执行效率有所不同。
2:value和values在基本用法上没有明显区别,它们都可以用于插入单条或多条数据。
3:如果你需要高效地插入单条数据,value是更好的选择;如果你需要批量插入多条数据,那么使用values会更加高效。同时,保持代码的一致性和正确性也是非常重要的。因此一般全都使用values.
update修改数据
# 例如,使用命令完成:
# (1)将用户表内所有用户性别一次性设置为女;
update user1 set gender = '女';
# (2)将用户表内所有用户的性别修改为男、年龄修改为18;
update user1 set gender='男' ,age = 18;
# (3)将用户表内编号为2的用户性别设置为女;
update user1 set gender = '女' where id = 2;
# (4)将用户表内编号为3的用户年龄更新为30,且住址更新为湖北省武汉市;
update user1 set age=30,address='湖北省武汉市' where id=3;
# (5)思考:去年存储的用户数据到今年了,那么存储在user数据表里的用户年龄都要增加1岁,该怎么处理呢?
update user1 set age = age+1 ;
delete删除数据
create table user2(
id int,
name varchar(20),
pwd varchar(20)
);
insert into user2 values (1,'tom','123'),(2,'jerry','123'),(3,'rose','123');
# (2)删除表内编号为1的这条数据,再删除用户名为rose的这条数据;
delete from user2 where id=1;
delete from user2 where name='rose';
# (3)使用命令删除表内所有数据,观察效果。
delete from user2;