mysql数据库
常用语句
1.说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库drop database dbname**
3、说明:备份sql server— 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’— 开始 备份BACKUP DATABASE pubs TO testBack
4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],…)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表drop table tabname
6、说明:增加一个列Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引**:**create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句选择:select * from table1 where 范围
**插入:**insert into table1(field1,field2) values(value1,value2)
**删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ —like的语法很精妙,查资料!
- SELECT *FROM t_username WHERE id=5; 精确查找指定id的
- SELECT*FROM t_username WHERE username=‘李四’; 查询指定字段的指定
排序**:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词A: UNION 运算符**
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
**注:**使用运算词的几个查询结果行必须是一致的。
12 、说明:使用外连接
A、left (outer) join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right (outer) join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12 、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据在selecte统计函数中的字段,不能和普通的字段放在一起;
13、对数据库进行操作:分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
14. 如何修改数据库的名称:
sp_renamedb ‘old_name’, ‘new_name’
联系:
外键--用于关联两个表
要删除两个表,那就先删除子 才能删除父
外键的的定义语句必须写在后面。
CREATE TABLE t_demo(id INT PRIMARY KEY AUTO_INCREMENT,sname VARCHAR(20) NOT NULL,spassword VARCHAR(20) NOT NULL ,DESCRIPTION VARCHAR(20),formdate DATE);
INSERT INTO t_demo(sname,spassword,formdate,DESCRIPTION) VALUES('zhangsan','1234',20191109,'学生');
SELECT*FROM t_demo;
DESC t_demo;
--FOREIGN KEY (id) REFERENCES t_demo(id)主外键的关联关系
--FOREIGN KEY (id) REFERENCES t_demo(id),外键
--bigid INT PRIMARY KEY AUTO_INCREMENT,主键
CREATE TABLE t_demo2(bigid INT PRIMARY KEY AUTO_INCREMENT, id INT ,sname VARCHAR(20) NOT NULL,spassword VARCHAR(20),FOREIGN KEY (id) REFERENCES t_demo(id));
INSERT INTO t_demo2(id,sname,spassword) VALUES(1,'kkk','123');
SELECT*FROM t_demo2;
INSERT INTO t_demo2(id,sname,spassword) VALUES(7,'kkk','123');
概念:
-
为什么有数据库的存在:
- 因为我们在操作程序的过程中肯定有数据的操作和存储,如果不能将数据存在硬盘上,我们的数据只是临时的,所以我们要想永久保存数据,就要将数据通过数据库,存储在硬盘上。
-
数据库的分类:
- SQL sever
- mySQL
- oracle数据库
-
数据库在存储过程,依据具体的事务会选择存储引擎,不同的存储引擎的特点不相同:事务性存储引擎(简单的事务概念:取钱时:出钱和余额的变化,这就是一个事务,两个不能单独发生变化),常用的事务引擎是InnoDB,在MySQL5.5.5之后,数据库默认使用的就是这个引擎。它支持事务安全表,行锁定(类似于Java中多线程的安全锁)和外键。
-
数据库的简单使用流程(以mysql为例):
-
官网安装好数据库之后,是黑窗口的形式打开的,个人喜欢界面化软件,所以下载了Sqlyog工具
-
在启动的时候,首先要启动数据库。我们在计算机–管理–服务中找到mysql,启动服务。
-
然后启动sqlyog软件,就可以连接数据库了。
-
-
我们在自己电脑上安装的服务器是将数据存在了本地,我们使用的客户端和服务端都在一台电脑,工作中数据库会被放在服务器上。
-
在使用数据库之前,先简单看看数据库的界面。
-
数据库的创建流程
-
创建数据库 CREATE DATABASE t_library;
-
创建表格:
CREATE TABLE t_tacher(tid INT PRIMARY KEY AUTO_INCREMENT,gender VARCHAR(10) DEFAULT('male') NOT NULL,tname VARCHAR(20) NOT NULL ,tage INT NOT NULL,ttime DATE);
-
创建子表:
CREATE TABLE s_student(sid INT PRIMARY KEY AUTO_INCREMENT,tid INT , gender VARCHAR(10) DEFAULT('male') NOT NULL ,sname VARCHAR(20)NOT NULL ,sage INT NOT NULL,stime DATE ,FOREIGN KEY(tid) REFERENCES t_tacher(tid)); --注意:FOREIGN KEY(tid) REFERENCES t_tacher(tid));创建外键的语句。 --创建两个外键的子表。 CREATE TABLE book2(id INT PRIMARY KEY AUTO_INCREMENT,sid INT ,tid INT ,bname VARCHAR(30)NOT NULL,price DOUBLE,btime DATE ,bdescription VARCHAR(50),FOREIGN KEY(sid)REFERENCES s_student(sid),FOREIGN KEY(tid)REFERENCES t_tacher(tid));
-
添加数据:
INSERT INTO t_tacher(gender,tname,tage,ttime) VALUES('famale','李老师',26,20181019); INSERT INTO t_tacher(gender,tname,tage,ttime) VALUES('famale','王老师',26,20170819); INSERT INTO t_tacher(tname,tage,ttime) VALUES('赵老师',29,20160716); SELECT*FROM t_tacher;
-
表内容的简单操作
--表属性的展示 DESC s_student; --显示数据表里面的内容 SELECT*FROM s_student; --删除表格 DROP TABLE book;
-
-
练习:
要求:建一个图书管理的数据库,并在其中建三个表 分别为学生表,图书表,管理员表(每张表字段不能少于五个),并将三张表关联起来。 往三张表中插入数据,通过学生表查询学生所借阅的书籍,通过管理员查询管理员所管理的图书。 --在创建过程中,有点变化,通过管理老师查询到的是学生不是自己管理的书。 CREATE DATABASE t_library; CREATE TABLE t_tacher(tid INT PRIMARY KEY AUTO_INCREMENT,gender VARCHAR(10) DEFAULT('male') NOT NULL,tname VARCHAR(20) NOT NULL ,tage INT NOT NULL,ttime DATE); CREATE TABLE s_student(sid INT PRIMARY KEY AUTO_INCREMENT,tid INT , gender VARCHAR(10) DEFAULT('male') NOT NULL ,sname VARCHAR(20)NOT NULL ,sage INT NOT NULL,stime DATE ,FOREIGN KEY(tid) REFERENCES t_tacher(tid)); CREATE TABLE book(id INT PRIMARY KEY AUTO_INCREMENT,sid INT ,bname VARCHAR(30)NOT NULL,price DOUBLE,btime DATE ,bdescription VARCHAR(50),FOREIGN KEY(sid)REFERENCES s_student(sid)); DESC t_tacher; DESC s_student; CREATE TABLE book2(id INT PRIMARY KEY AUTO_INCREMENT,sid INT ,tid INT ,bname VARCHAR(30)NOT NULL,price DOUBLE,btime DATE ,bdescription VARCHAR(50),FOREIGN KEY(sid)REFERENCES s_student(sid),FOREIGN KEY(tid)REFERENCES t_tacher(tid)); DESC book2; INSERT INTO t_tacher(gender,tname,tage,ttime) VALUES('famale','李老师',26,20181019); INSERT INTO t_tacher(gender,tname,tage,ttime) VALUES('famale','王老师',26,20170819); INSERT INTO t_tacher(tname,tage,ttime) VALUES('赵老师',29,20160716); SELECT*FROM t_tacher; INSERT INTO s_student(tid,gender,sname,sage,stime)VALUES(1,'famale','小明',18,20200707); INSERT INTO s_student(tid,sname,sage,stime)VALUES(1,'小华',19,20190707); SELECT*FROM s_student WHERE(tid=1); INSERT INTO s_student(tid,gender,sname,sage,stime)VALUES(2,'famale','赵钱',18,20200707); INSERT INTO s_student(tid,sname,sage,stime)VALUES(2,'孙黎',19,20190707); INSERT INTO s_student(tid,gender,sname,sage,stime)VALUES(3,'famale','唐松',18,20200707); INSERT INTO s_student(tid,sname,sage,stime)VALUES(3,'元庆',19,20190707); DESC s_student; SELECT*FROM s_student; DROP TABLE book; CREATE TABLE book(id INT PRIMARY KEY AUTO_INCREMENT,sid INT ,bname VARCHAR(30)NOT NULL,price DOUBLE,btime DATE ,bdescription VARCHAR(50),FOREIGN KEY(sid)REFERENCES s_student(sid)); DROP TABLE book2; INSERT INTO book(sid,bname,price,btime,bdescription)VALUES(6,'并发艺术',100,20200714,'信息技术类'); INSERT INTO book(sid,bname,price,btime,bdescription)VALUES(5,'百年孤独',34,20200715,'外国文学'); INSERT INTO book(sid,bname,price,btime,bdescription)VALUES(1,'时间简史',66,20200719,'科技类丛书'); SELECT*FROM book; SELECT*FROM book WHERE(sid=6); -- 在这主要是创建了,主外键的联系,在数据库中,主键是唯一且不能为空的,在每个表中可以创建外键。
INSERT INTO book(sid,bname,price,btime,bdescription)VALUES(1,‘时间简史’,66,20200719,‘科技类丛书’);
SELECTFROM book;
SELECTFROM book WHERE(sid=6);
– 在这主要是创建了,主外键的联系,在数据库中,主键是唯一且不能为空的,在每个表中可以创建外键。