SQL:(结构化查询语言)

通过SQL语句与数据库交互。

常用数据库:SQLserver 微软 Oracle甲骨文  MySql甲骨文  DB2IBM  SyBase

MySQL数据库:

windows命令:mysql -u用户名 -p密码

Mysql -h localhost -uroot

Mysql -uroot -p

默认运行在:3306端口

MySql是数据库管理软件。

创建数据库:

创建数据库:create database mydata1;

创建指定字符编码的数据库:Create database mydb2 character set utf8;(编码不要横线)

细节:

Character set utf8;指定编码

Collate name;指定校对规则(规则参考文档)

编码和校对规则要对应。一般使用默认的校对规则即可。

Create database mydb3 character set utf8 collate utf8_general_ci;

查看数据库:

查看当前库中所有的表:show tables;

查看所有数据库:show databases;

查看数据库穿件的详细信息(编码):show create database mydb3;

删除数据库:

drop database mydata1;

修改数据库:(库名不能改)

Alter database mydb3 character set gb2312;

备份数据库:

命令:mysql dump -uroot -p 数据库名>文件名.sql

Mysql dump -uroot -p mydb2>c:test.sql(windows 命令)

恢复数据库:

只能恢复数据库中的数据,不能恢复库,如果库被删除,要新建库,推出库,然后恢复数据

Source 文件名.sql(要先进入库,然后恢复)

Source c:\test.sql

Mysql -uroot -proot mydb2<文件名.sql(window 命令)

Mysqldump -uroot -p mydb2<c:test.sql

注意区分windowS命令和SQL语句:命令后不加分号,SQL语句后要加分号

创建表:

Create table table_name

(

Field1 type,

Field2 type// 最后一个没逗号

)character set Utf8 collate ...;

MYSQL常用数据类型:详细参考文档

数值类型:

BIT位

TINYINT 字节

BOOL BOOLEAN 存储的是0和1

SMALUNT对应SHORT

INT

BIGINT相当于LONG

FLOAT(M,D)//M是数据宽度,D是小数位数

DOUBLE(M,D)

文本,二进制类型:

Char(size)最大255

Varchar(size)长度可变字符串,最大数65535

BLOB ,LONGBLOB大的二进制数据,如电影TINYBLOB,BOLOB,MEDIUMBLOB,LONGBLOB

TEXT ,LONTTEXT大文本,其他数据库中使用的是clob ,longclob

时间日期:

DATA

DATATIME

Timestamp时间戳,可记录操作时间

查看上面创建的表的详细信息:

Show create table person;//显示创建语句

查看表结构:

desc person;

防止乱码:库和表的编码一致

修改表结构:

追加:

Alter talbe person add column type;

修改:

Alter talbe person modify cloumn type;

删除:

Alter talbe person drop column;(这里是删除表结构的一列,不是数据)

修改表名:

Rename table person to person1;

修改表的字符编码:

Alter talbe person character set utf8;

数据库CRUD语句:

字符串和日期要用’‘单引号。

Insert:

Insert into person(id,name) values(1,'hd');

细节:

要指定插入到哪个字段

往指定的列插入数据,只需指定这一列,其他列为NULL

可以把所有的值都用''单引号括起来。会自动转型,防止出错。

命令窗口中使用SQL语句插入中文乱码问题:

因为在命令窗口中输入中文的编码是GB2312,而表,库,MYSQL的编码是UTF-8,插入会报错。

解决方法:

Show variables like 'chara%';查找客户端编码变量

Character_set_client。显示的将客户端编码改为GB2312:

Set character_set_client=gb2312; mysql会自动将数据转为UTF-8。

因为 窗口是GB2312编码,显示UTF-8的中文时会乱码。把结果编码改为GB2312即可。

Set character_set_results=gb2312;

显示修改只对当前窗口有效。

一劳永逸需要修改mysql配置。(不推荐,因为开发很少用命令操作数据库。)

Update:

Update person set salary=5000;修改表中所有记录

Update person set salary=5000 where name='aa';//修改某一条数据。

Update person set salary=5000,job='java',sex='female' where name='bb';

Update person set salary=salary+1000 where name='cc';

细节:如果不是修改所有数据,要写where

Delete:

仅删除记录不能删除表(删除表用drop table person;),不能删除某一列数据(可用update更新列数据)

Delete from person where ....;

Delete from person;//删除表中所有数据

Truncate table person;也可以删除表中的所有数据,区别是:delete 是一条一条的删,而truncate table 是删除整个表数据,并摧毁表结构,然后再重建表结构。在删除的数据很多时,效率更高。

Select:

查询有单表查询和多表查询。

Select [distinct] * from person;

Distinct是否剔除重复数据(不是指记录)。指定多个字段时,只有多个字段都相同才会剔除。

Select * from person;//查询所有数据

Select name,english form person;//查询学生的姓名和英文。

Select distinct english from person;

Secelt name,chinese+10,english+10 from student;//为所有学生的每门功课加10分。(参与查询的列可运算。)表中的数据没有变化

Select name,(chinese+english+math) from student;查询每个人的总分。

使用别名:

Select name as 姓名,(chinese+english+math) as 总分 from student;//(as可省略)

使用where过滤:

Select name from student where english>'90';

Select name from student where (chinese+english+math)>200;

Where语句中的常用运算符:

< ,> ,<=,>=,=,<>

Between ...and..显示某一区间的值

In(set)//显示在in 列表中的值

Like '张'模糊查询,like语句中,%代表0个或多个任意字符,_代表一个字符

Is NULL判断是否为空

And 多个条件同时成立

Or 多个条件任一成立

Not 不成立

Select name form student where english between 80 and 90;查询英语成绩在80到90之间的名字。(包含80和90)

Select  name from student where math in 95,100; //查询数学为95或100的名字。

Select * from student where name like'李%';查询姓李的数据。

Select * from student where chinese>80 and math>80;语文和数学都大于80的数据。

Order by子句对查询结果排序:

Selct column from person order by column asc|desc;

排序的列可以是表中列名,也可以是查询语句中的别名。

Order by语句位于查询语句结尾。

Select name,math from student order by math;(默认升序)

Select name,(chinese+english+math)as total from student order by total desc;

Select name,(chinese+english+math)as total from  student where name like '李%' order by total desc;

Count合计函数:

Count()统计列或行的总数

Select count(*) from student;// 统计记录数

Select count(name) from student;//按名字统计记录数

Select count(*) from student where math>=90;//统计数学满90分得人数。

Sum合计函数:

Select sum(math) from student;//查询表中所有人的数学总和。

Select sum(chinese),sum(english),sum(math) from student;各科班级总分。

Select sum(chinese)/count(chinese) from student;求班级语文平均分

Avg平均分合计函数:

Select avg(math) from student;求数学平均分。

MAX/MIN合计函数:

求满足where条件的一列的最大值和最小值。

Select max(chinese+english+math),min(chinese+english+math)from student;//求班级最高总分,和最低总分

Group by子句:

按列进行分组后,再查询

Select product,sum(price) from orders group by(product);

按产品名称归类后,查询每类商品的总价。

Having子句:

和where一样可以过滤。Having 子句中可以使用合计函数常跟在group by 后,作用于组。如果过滤条件中用合计函数,则使用having ,否则用where .

Select product from orders group by(product) having sum(price)>100;

查询总价大于100的商品。

SQL提供了一些数学函数:

时间日期函数:

Select addtime('10:25:20','01:00:10')加上后面的时间后的

加,减

现在的时间

时间差

字符串函数:

\s得到Mysql系统信息

数学函数:

定义表的约束:

主键约束:

创建表时把数据唯一的字段指定为主键id int primary key

Id int primary key auto_increment数据库来管理主键的值,操作时用户不用管主键值。(不推荐,因为编程常用到ID值。)

主键要非空且唯一,用来唯一标示每条数据

Alter table person drop primary key;删除主键

唯一约束:

Name varchar(40) unique限定指定列数据唯一

非空约束:

Name varchar(40) unique not null唯一非空

Check约束,mysql不支持

外键约束:

将本表中的某一列做为另一个表的外键,用来唯一标示另一个表中的数据,和与本表的数据对应关系。

为表加外键:constraint husband_id_ FK foreign key(husband_id) references husband(id);

Husband_id_Fk是外键名

Husband_id是在哪一列加外键。

References husband(id)外键来自husband表的id 列;

在有外键的表中插入数据:要指定外键列的值

有关系对象的表的设计:

一个实体一张表,表的字段看实体有什么属性。

为维护关系,需要在多的一方,加外键约束。

一对多:(多对一)

一个部门对应多个员工,可在员工表中加外键。

多对多:

一个学生对应多个老师,一个老师也对应多个学生。

设计三个表:学生表student,老师表teacher,中间表teacher_student.

中间表保存的是2列来自student,teacher的外键,将多对多转成了2个一对多。

中间表除了保存2列外键,通常还会添加主键,开发中,常用2列外键做联合主键。

Create table teacher_student

(

Teacher_id int,

Student_id int,

Constraint teacher_id_FK foreign key teacher_id references teacher(id);

Constraint student_id_FK foreign key student_id references student(id);

Primary key(teacher_id,student_id)//用2个外键做联合主键

);

一对一:

人和身份证。人是主表,身份证是从表。主可以没有从,从不可以没有主

设计2个表,并在从表上加外键,且外键非空,唯一

可以直接在身份证表的ID列加外键。ID主键本身非空唯一。

Constraint id_Fk foreign key(id) references person(id);

自关联:(无限级分类)

目录表中,要分类,可通过外键parent_id引用id来指定子类的父类。父类的parent_id为空

Constraint id_Fk foreigh key(parent_id) references category(id);

SQL语句(mysql为模板)相关推荐

  1. mysql创建用户表的sql语句,mysql创建表的sql语句

    mysql 动态sql语句,如何用一款小工具大大加速MySQL SQL语句优化(附源,mysql分页查询sql语句,mysql创建表的sql语句 mysql建表语句_计算机软件及应用_IT/计算机_专 ...

  2. 55:Mysql用户管理|常用sql语句|mysql数据库备份恢复

    2019独角兽企业重金招聘Python工程师标准>>> 1.Mysql用户管理: 场景,为了安全,新建的站点,创建新的用户,或者给已有用户授权,对某个库或者某个表有权限: 语法: g ...

  3. MySQL—05—MySQL如何处理SQL语句;MySQL数据库存储引擎介绍;

    一. MySQL 中的执行计划 1 MySQL 执行计划 在 MySQL 中可以通过 explain 关键字模拟优化器,执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的. 2 M ...

  4. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  5. mysql杀掉sql语句,Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

    在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映.这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下: KILL [CONNECTION | ...

  6. 查询所有表、索引、视图信息的SQL语句-Mysql/oracle/sql server的不同实现方式

    注:所有查询默认在管理员用户下进行 ----------------------------------Mysql中------------------------------------------ ...

  7. 【CXY】常用sql语句 -- mysql

    总结一下常用的sql语句,测试版本:5.1 1.创建表 CREATE TABLE t_test (id_ VARCHAR(32),title_ VARCHAR(255),content_ VARCHA ...

  8. php一条SQL语句mysql插入两条重复的数据

    今天晚上在做测试开发的时候,请求了一个最简单的Insert SQL 语句,数据库里竟然出现了两条数据!!! 经过反复的琢磨,觉着代码没有问题.做了很多的代码改动后依然不行. 通过这边文章我看到了一点思 ...

  9. SQL语句(mysql)

    DDL数据定义语言:使用create ,drop,alter等关键字 创建库:create database [if not exists] 数据库名 charset utf8 删除库:drop da ...

  10. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

最新文章

  1. android 崩溃搜索 AndroidRuntime
  2. 802.11 波束成形技术总结
  3. iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
  4. IOS15最标准的纯代码搭建项目
  5. vue基础教程总结篇,用最短的时间入门vue.js(持续更新...)
  6. tomcat:Cannot find /usr/local/tomcat1/bin/setclasspath.sh
  7. “编程能力差,90%输在了数学上!”CTO:其实你们都是瞎努力!
  8. jQuery按键监听(模拟QQ聊天:按下回车键发送消息)
  9. 程序员居然都玩起“直播”,你的好友工程狮已经上线!
  10. spring aop聊点不一样的东西
  11. 树的遍历 ALDS1_7_C: Tree Walk
  12. 肖特基二极管、瞬态二极管、普通二极管等各种二极管的区别?
  13. 2017年美国计算机科学,2017年U.S.News美国大学研究生计算机科学专业排名TOP10
  14. excel连接mysql速度太慢,excel表格数据太大-excel太大,运行缓慢该怎么办
  15. 机器学习从蛋白序列预测蛋白分类(二)
  16. 数据仓库工作总结(觉得有点意思)
  17. 砥砺前行!华为构建开放共赢云生态
  18. DHCP服务器是什么?
  19. 指定文件名无效或太长,请指定另一文件名
  20. netstat 命令详解及实现原理

热门文章

  1. Microsoft Windows 8.1 使用记录
  2. 创下国产手机在海外市场销量最高纪录的小米,重新关注国内市场
  3. 将设备插入usb2.0端口_我可以直接将USB设备插入主板吗?
  4. PS常用美化处理方法大全
  5. 毛概期末考试要点总结
  6. ubuntu如何查看网卡名称_修改Ubuntu网卡名称
  7. 《python深度学习》学习笔记
  8. 计算机组装大赛宣传,“能工巧匠”电脑硬件组装大赛活动报道
  9. 雅思听力,阅读,写作纪实
  10. java类构造_Java中类的构造方法