mysql语句

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');

概念:

  1. 为什么有数据库的存在:

    • 因为我们在操作程序的过程中肯定有数据的操作和存储,如果不能将数据存在硬盘上,我们的数据只是临时的,所以我们要想永久保存数据,就要将数据通过数据库,存储在硬盘上。
  2. 数据库的分类:

    • SQL sever
    • mySQL
    • oracle数据库
  3. 数据库在存储过程,依据具体的事务会选择存储引擎,不同的存储引擎的特点不相同:事务性存储引擎(简单的事务概念:取钱时:出钱和余额的变化,这就是一个事务,两个不能单独发生变化),常用的事务引擎是InnoDB,在MySQL5.5.5之后,数据库默认使用的就是这个引擎。它支持事务安全表,行锁定(类似于Java中多线程的安全锁)和外键。

  4. 数据库的简单使用流程(以mysql为例):

    • 官网安装好数据库之后,是黑窗口的形式打开的,个人喜欢界面化软件,所以下载了Sqlyog工具

    • 在启动的时候,首先要启动数据库。我们在计算机–管理–服务中找到mysql,启动服务。

    • 然后启动sqlyog软件,就可以连接数据库了。

  5. 我们在自己电脑上安装的服务器是将数据存在了本地,我们使用的客户端和服务端都在一台电脑,工作中数据库会被放在服务器上。

  6. 在使用数据库之前,先简单看看数据库的界面。

  7. 数据库的创建流程

    1. 创建数据库 CREATE DATABASE t_library;

    2. 创建表格:

      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);
      
      
    3. 创建子表:

      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));
      
    4. 添加数据:

      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;
      
    5. 表内容的简单操作

      --表属性的展示
      DESC s_student;
      
      --显示数据表里面的内容
      SELECT*FROM s_student;
      
      --删除表格
      DROP TABLE book;
      
  8. 练习:

    要求:建一个图书管理的数据库,并在其中建三个表 分别为学生表,图书表,管理员表(每张表字段不能少于五个),并将三张表关联起来。
    往三张表中插入数据,通过学生表查询学生所借阅的书籍,通过管理员查询管理员所管理的图书。
    
    --在创建过程中,有点变化,通过管理老师查询到的是学生不是自己管理的书。
    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;
SELECT
FROM book WHERE(sid=6);

– 在这主要是创建了,主外键的联系,在数据库中,主键是唯一且不能为空的,在每个表中可以创建外键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值