SQL语言

一、使用SQL对数据库操作

1.1 连接数据库

  • 打开cmd窗口,使用命令,连接mysql数据库
  • 命令:mysql -u root -p 密码

1.2 创建数据库

  • 语句:create database 数据库的名称;
  • 示例:create database testdb1;

1.3 查看所有的数据库

  • 语句:show databases;

1.4 删除数据库

  • 语句:drop database 要删除的数据库的名称;
  • 示例:drop database testdb1;

1.5 切换数据库

  • 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库
  • 语句:use 要切换的数据库的名称;
  • 示例:use testdb2;

1.6 查看当前使用的数据库

  • 语句:select database()

二、使用SQL对数据库表操作

2.1 创建数据库表

语句:
create table 表名称 (
字段 类型(长度),
字段 类型(长度)
);

//示例:创建表 user,字段  id  username  password  sex
create table user (
 id int,
 username varchar(40),
 password varchar(40),
 sex varchar(30)
)

创建带约束的表

create table person (
id int primary key ,
username varchar(40) not null,
sex varchar(20)
)

2.2 查看表结构

desc 表名称;

2.3 删除表

drop table 要删除的表名称;

2.4 查看当前的数据库的表

show tables;(查询数据库中一共有多少个表)

三、操作表中的记录

3.1 添加记录 insert

语句:insert into 要添加的表名称 values(要添加的值);
示例:insert into user values(1,'aaa','123456','nan');
注意:当添加的字段的数据类型是int类型,直接写值,如果添加的字段的类型是varchar类型和日期类型,使用单引号把值包起来

3.2 修改记录 update

语句:update 表名称 set 要修改的字段的名称1=修改的值2,要修改的字段的名称2=修改的值2 where 条件
示例:update user set username='aaa',password='999' where id=1;

3.3 删除记录 delete

语句:delete from 表名称 where 条件
示例:delete from user where id=1;
注意:不添加where条件,把表里面的所有的记录都删除

3.4 查询记录 select

语句:select 要查询的字段的名称 (*) from 表名称 where 条件
示例:select * from user;(查询表里的数据)
select username,chinese from user;(可以查询多个字段)
select * from user where id=2;
注意:as关键字可以给字段起一个别名。
select username as u1,chinese as c1 from user;

3.5 去除重复记录 distinct

语句 select distinct * from 表名;

3.6 运算符 < > >= <=

select * from student where english > 60;
in:在范围内
练习:查询表里面英语成绩是80-100的学生信息
select * from student where english in (80,90);(写谁查谁)
and:在where里面如果有多个条件,表示多个条件同时满足
练习:查询表里面英语成绩是70,并且数学成绩是80的学生信息
select * from student where english=70 and math=80;
得到区间范围的值
练习:查询表里面数学成绩在80-100之间的值(两种写法)
写法一,select * from student where math >=80 and math <=100;
写法二,select * from student where math between 80 and 100;
like:模糊查询
练习:查询表里面name包含a的学生信息
select * from student where name like '%a%';
对查询记录排序 order by存储
order by写在select语句的最后
第一,升序 order by 要排序字段 asc(asc可以省略,默认的情况下就是升序)

  • 练习:对student表里面查询的数据,根据语文成绩进行升序排列
    select * from student order by english asc;
    第二,降序 order by 要排序字段 desc
    练习:对student表里面的英语成绩进行降序排列
    select * from student order by english desc;

3.7 查看当前运行的数据库

select database();

3.8 聚集函数

使用提供的一些函数,直接实现某些功能。
count()函数

  • 根据查询的结果,统计记录数
    *代表所有字段
  • 写法 select count(*) from ...where....
  • 查询student表里面有多少条记录
    select count(*) from student;
  • 查询student表里面英语成绩大于90的学生有多少
    select count(*) from student where english>90;
    sum()函数
  • 求和的函数
  • 写法 select sum(要进行求和字段) from ...where....
    **得到student表里面的英语的总成绩
    select sum(english) from student;
  • *得到student表里面英语总成绩,数学的总成绩
    select sum(english),sum(math) from student;
    *得到student表里面语文成绩的平均分(总的成绩/总的人数)
    select sum(english)/count(
    ) from student;
    avg()函数
  • 计算的平均数的函数
  • 写法 select avg(要计算平均数的字段名称) from ...
  • 练习:得到student表里面数学成绩的平均分
    select avg(math) from student;
    max()函数
  • 计算最大值
  • 写法 select max(字段) from...
  • 练习:得到英语成绩的最大值
    select max(english) from student;
    min()函数
  • 计算最小值
  • 写法 select min(字段) from...
  • 练习:得到user表里面英语成绩的最小值
    select min(english) from student;
    分组操作
    分组使用 group by 根据分组的字段
    语法:group by + 要分组的字段
    在分组的基础之上再进行条件的判断 hav4ing,后面可以写聚集函数。

四、mysql关键字limit

(1)limit关键字查询表中的某几条记录
(2)limit关键字不是标准sql的关键字,只能在mysql数据库里面使用,实现分页的功能。

  • 在oracle里面特有关键字 rownum
  • 在sqlserver里面特有关键字 top
    (3)使用limit查询前几条记录
  • 写法: limit 前几条记录 limit 3
    查询orders表里面前三条记录
    select * from orders limit 3;
    select * from orders limit 0,3;

(4)使用limit查询第几条到第几条记录

  • 写法: limit 第一个参数,第二个参数(不包括第一个参数)
    ** 第一个参数开始的记录数的位置,从0开始的
    ** 第二个参数从开始的位置向后获取几条记录
  • 练习:查询orders表里面第二条到第四条记录
    select * from orders limit 1,3;

五、mysql的数据类型

5.1 字符串型

VARCHAR、CHAR
当创建表时候,使用字符串类型,name varchar(40),指定数据的长度
varchar和char的区别:
varchar的长度是可变的,比如 name varchar(5),存值 a ,直接把a存进去
char的长度是固定的,比如name char(5),存值 b,把b存进去,后面加很多空格

5.2 大数据类型

BLOB(存音频,视频,图片等)、TEXT(存字符类型,文本文件)

  • 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件的路径

5.3 数值型

mysql中 TINYINT SMALLINT INT BIGINT FLOAT DOUBLE
Java中 byte short int long float double

5.4 逻辑性

BIT 占1位,1字节占8位

  • 类似java里面的boolean

5.5 日期型

DATE:用于表示日期 1945-08-15
TIME:用于表示时间 19:10:40
下面的两个类型可以表示日期和时间
DATETIME:手动添加时间到数据表里面
TIMESTAMP:自动把时间添加到表里面

六、MySQL的约束

6.1 非空约束 not null

  • 表示数据不能为空

6.2 唯一性约束 unique

  • 表中的记录不能重复的

6.3 主键约束 primary key

  • 表示非空,唯一性
  • 后面自动增长 auto_increment
    一旦字段设置为主键,那么该字段就是非空并且唯一
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容