数据库基础(一):数据库sql语言

1.对数据库的操作
2.对表的操作
3.对数据的操作
4.备份和恢复数据库
5.多表操作

注:本文用的数据库是mysql

1.对数据库的操作

         (1).创建数据库

                      create database db1 character set utf8 collate utf8_bin;

                      注:collate是编码校对规则

           (2).删除数据库

                      drop database db1;

           (3).修改数据库

                      alter database db1 character set gbk;

           (4)查找数据库

                      ^1.查看所有数据库

                                 show databases;

                      ^2.查看指定数据库的建表语句

                                 show create database db1;

           (5).使用数据库

                      use db1;

2.对表的操作

           (1).创建表(字段名,类型,约束,<主键的话还有一个增长方式>)

                      create table tb1(

                                 id int primary key auto_increment,

                                 name varchar(20) unique,

                                 birthday date,

                                 salary double,

                                 job varchar(40),

                                 gender bit not null

                                 

                      );

           (2).删除表

                      drop table tb1;

           (3).修改表

                      ^1.给表改名

                                 rename table tb1 to tb2;

                      ^2.给表改编码

                                 alter table tb1 character set gbk;

                      ^3.新增一个字段

                                 alter table tb1 add name2 varchar(20);

                      ^4.删除一个字段

                                 alter table tb1 drop column name2;

                      ^5.修改字段名

                                 alter table tb1 change name name3 varchar(10);

                      ^6.修改字段类型

                                 alter table tb1 modify name3 varchar(20);

           (4)查表

                      ^1.显示所有表

                                 show tables;

                      ^2.显示指定表创建语句

                                 show create table tb1;

                      ^3.显示表结构

                                 desc db1;

           

3.对数据的操作

           (1).编码,解码,转码

                      编码:将字符变成二进制

                                 byte[] bs = s.getBytes(utf-8);

                      解码:将二进制解析成字符

                                 String s = new String(111,gbk);

                      转码:将utf8编码的二进制转化成gbk编码的二进制

                      注:若想改变数据库编码方式:my.ini==>default-character-set=gbk/utf8

           (2).插入(insert)

                     insert into tb1 (id,name,job,birthday) values (1,'鹏哥哥','程序员','1995-11-20');

                     ^1.字符和日期需要加单引号

                     ^2.第一个括号可以不写,但是第二个括号的值必须按照表里字段的顺序一个个加(建议写)

           (3).删除(delete)

                      ^1.删除一条记录

                                 delete from tb1 where name='鹏哥哥';

                      ^2.仅删除整个表数据

                                 delete from tb1;

                      ^3.不但删除表数据,还删除表本身

                                 truncate table tb1;

           (4).改(update)

                      update tb1 set job='未来的架构师' where name='鹏哥哥';

           (5).查(select)

                      ^1.基本查询

                                 select distinct chinese 语文 from exam;

                                 &1.关键字distinct可以去除掉字段重复的数据

                                 &2.chinese 语文相当于给chinese字段重命名为语文

                      ^2.where判断

                                 select chinese from exam where chinese >60;

                                 &1.where中可以用'='来筛选

                                 &2.where中可以用'>'或'<'来筛选

                                 &3.where中可以用between 80 and 100来筛选

                                 &4.where中可以用in(90,100)来筛选90分和100分的成绩

                                 &5.where中可以用like '张%'筛选张开头的人名

                                 &6.where中可以用like '张_'筛选张开头且名字只有2个字的人名

                      ^3.order by 排序

                                 ASC:升序(默认)

                                 DESC:降序

                      ^4.聚合函数
                                 &1.求数量:count()

                                            select count(*) from exam;

                                 &2.求和:sum()

                                            select sum(chinese) from exam;

                                 &3.最值:min()/max()

                                            select min(chinese) from exam;

                                 &4.平均值:avg()

                                            select avg(chinese) from exam;

                                 &5.group by(分组查询):查询到指定字段重复的结果,会将重复的去掉或是根据聚合函数操作这些字段

                                            select product 商品名,sum(price) 商品总价 from orders group by product having sum(price)>100

                                            %1.where和having的区别

                                                       where不可以过滤聚合函数,having可以

                                                       where在group by之前执行,having在其之后执行

                                            %2.写sql的顺序

                                                       select from where groupby having orderby

                                            %3.sql执行顺序

                                                       from where select groupby having orderby

4.备份和恢复数据库

           备份:cmd下:mysqldump -u 用户名 -p 密码 dbName>路径

           恢复:

                      (1).cmd下:mysql -u 用户名 -p 密码 dbName<路径

                      (2).mysql命令下:source 路径

           注:恢复只能恢复数据,不能回复数据库,所以数据库需要先自己创建一下

5.多表操作

           (1).外键的意义

                      数据库除了保持数据还要保持数据的关系,多个表直接的关系就靠外键维护

           (2).关于关系

                      一对一:外键随便在哪个表里

                      一对多:外键在多的那一方

                      多对多:专门用一个表记录这些表的外键

           (3)

                      create table emp(

                                 id int primary key auto_increment,

                                 name varchar(20),

                                 foreign key (foreignId) references dept(id)

                      );

                      create table dept(

                                 id int primary key auto_increment,

                                 name varchar(10)

                      );

           (4)多表查询

                      ^1.笛卡尔积查询(表1有M条数据,表2有N条数据,可以查到M*N条,错误多,不推荐)

                      ^2.内连接(可以认为是两个表的交集)

                                 select * from emp inner join dept on emp.foreignId = dept.id;

                      ^3.左外连接(可以认为交集再加左表特有的,排除右表私有的)

                                 select * from emp left join dept on emp.foreignId = dept.id;

                      ^4.右外连接(与左外连接正好相反)

                                 select * from emp right join dept on emp.foreignId = dept.id;

                      ^5.全外连接(交集+左边独有+右边独有)

                                 select * from emp full join dept on emp.foreignId = dept.id;

                                 注:mysql没有全外连接,用union关键字代替

                                 select * from emp left join dept on emp.foreignId = dept.id;

                                 union

                                 select * from emp right join dept on emp.foreignId = dept.id;

猜你喜欢

转载自blog.csdn.net/qq_40594696/article/details/86265401