以备日后复习之用必威:,那么这个字段就是A表

转载自:

转载自: 

目录

前段时间从教室借了本介绍SQL的书,计划复习一下着力语法,记录一下笔记,整理一下思路,以备日后复习之用。

大器晚成、关系型数据库和SQL

实际上正确的讲,SQL是一门语言,实际不是一个数据库。

怎么着是SQL呢?简单的讲,SQL正是保卫安全定谐和利用关系型数据库中的的数额的生龙活虎种标准的Computer语言。

      • 启动MySQL服务
      • 行使root客商登录
      • 翻看命令扶持音信
      • 查看给予客户的莱芜权限
      • 注释
      • 撤销正在输入的一声令下
      • 翻开当前富含什么数据库
      • 连续几天来数据库
      • 翻开当前数据库中含有何表
      • 突显表属性
      • 展示服务器警示或错误音信
      • 退出数据库
      • 新建数据库
      • 新建数据表
      • 数据类型
        • CHAR和VARCHAR的区别
        • ENUM和SET的区别
      • 插入数据
      • SQL约束
        • 主键
        • 外键
        • 非空约束
        • 暗许值约束
        • 唯风姿罗曼蒂克约束
      • MySQL通配符
      • MySQL查询语句关键字顺序
      • SELECT操作
        • 查看表中享有的剧情
        • SELECT基本格式
        • 对查询结果排序
        • 剔除重复值
        • 范围重临结果数
        • 停放函数和总括
        • 子查询
        • 再而三查询
      • 删除数据库
      • 重命名数据表
      • 除去数据表
      • 在表中加进列
      • 删除列
      • 修改列
      • 改正数据类型
      • 改善表中某些值
      • 删除某行记录
      • 为某列营造目录
      • 来得某表的目录
      • 始建视图生机勃勃种设想存在的表
      • 导入将文件中的数据保存进表
      • 导出将表中数据保存到文件中
      • 备份整个数据库
      • 备份整个表
      • 东山复起数据库
      • 正则表达式
      • 空域元字符
      • 字符类预约义字符集
      • 非常多少个实例
      • 定位元字符
      • 拼接字段
      • 别名alias
      • MySQL算数操作符
      • SELECT测试
      • SQL函数
      • 常用的文本管理函数
      • 日子和岁月管理函数
      • 数值管理函数
      • SQL聚焦函数
      • 分组数据
        • WHERE 和 HAVING
        • GROUP BY 和 ORDER BY
      • SELECT子句顺序
      • 子查询

PS:本文适用SQL Server二〇〇九语法。

1.1 SQL语言首要有3个关键的组成都部队分。

  1. DML(Data Manipulation Language)数据操纵语言。这些模块能够让大家探求、改过、增添、删除数据库中的数据。
  2. DDL(Data Definition Language)数据定义语言。是的我们能够创设和改造数据库自己。如:DDL提供ALTER讲话,他让我们得以校勘数据库中表的陈设性。
  3. DCL(Data Control Language)数据调控语言,用于掩护数据库的铜川。

在SQL术语中,记录(record)和字段(田野)实际上就称为行(row)和列(column)。

启动MySQL服务

$ sudo service mysql start

生机勃勃、关系型数据库和SQL

实在正确的讲,SQL是一门语言,而不是二个数据库。

哪些是SQL呢?简单的讲,SQL正是维护和选取关系型数据库中的的数额的生龙活虎种标准的微管理器语言。

1.2 主键和外键

主键之所以有必要:

  • 第风度翩翩使您唯意气风发标志表中独立的一站式。主键确定保证了唯黄金时代性。
  • 能够非常轻松的将八个表和另叁个表关联。
  • 主键日常就可以活动默许创制索引,进步了询问速度。

外键正是说A表中的某些字段,同不常候是B中的主键,那么那几个字段便是A表中的外键。希望A表中的那几个外键的值必需是B中黄金年代度存在的值。

使用root客商登录

$ mysql -u 用户名 -p

-p代表使用密码登录

1.1 SQL语言主要有3个关键的组成都部队分。

  1. DML(Data Manipulation Language)数据操纵语言。那个模块能够让大家探究、修正、扩展、删除数据库中的数据。
  2. DDL(Data Definition Language)数据定义语言。是的大家能够创建和改变数据库自身。如:DDL提供ALTER讲话,他让大家得以改进数据库中表的统筹。
  3. DCL(Data Control Language)数据调控语言,用于掩护数据库的白山。

在SQL术语中,记录(record)和字段(田野同志)实际上就称为行(row)和列(column)。

1.3 数据类型

常常来说,有3中第后生可畏的数据类型:

  1. 数字(Numeric)
  2. 字符(Character)
  3. 以至日期/时间(Date/Time)

bit是数字型,它只同意八个值,0和1。

字符类型不一致^1):

类型 长度 说明
char 固定长度
nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
varchar 可变长度 效率没char高 灵活
nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
  • 1字节=8位
  • bit正是位,也叫比特位,是Computer表示数据最小的单位。
  • byte便是字节,1byte=8bit,1byte正是1B;
  • 叁个字符=2字节;

翻看命令协理音信

mysql> HELP 命令名;

1.2 主键和外键

主键之所以有无法缺乏:

  • 率先令你唯大器晚成标志表中单独的后生可畏行。主键确定保障了唯大器晚成性。
  • 能够相当轻松的将三个表和另几个表关联。
  • 主键平日就能够自动暗中同意成立索引,升高了查询速度。

外键就是说A表中的有些字段,同一时候是B中的主键,那么这几个字段正是A表中的外键。希望A表中的这么些外键的值必得是B中已经存在的值。

1.3 空值

空值不对等空格或空白。使用NULL表示空值。

翻开给予顾客的拉萨权限

mysql> SHOW GRANTS;

1.3 数据类型

日常来说,有3中根本的数据类型:

  1. 数字(Numeric)
  2. 字符(Character)
  3. 以至日期/时间(Date/Time)

bit是数字型,它只允许五个值,0和1。

字符类型不相同^1):

类型 长度 说明
char 固定长度
nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
varchar 可变长度 效率没char高 灵活
nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
  • 1字节=8位
  • bit便是位,也叫比特位,是Computer表示数据最小的单位。
  • byte就是字节,1byte=8bit,1byte就是1B;
  • 一个字符=2字节;

二、简单增加和删除改查

注释

-- 单行注释

/* 多行注释 */

1.3 空值

空值不对等空格或空白。使用NULL表示空值。

2.1 查(列名有空格的事态)

1 SELECT [ last name]
2 FROM Customers

用方括号将有空格的列名括起来。
PS: MySql中用重音符`(~)按钮。Oracle用双引号。

撤销正在输入的一声令下

c

二、轻松增加和删除改查

询问顺序,SQL实施种种

1 Select -1>选择列,-2>distinct,-3>top
2   1>…From 表
3   2>…Where 条件
4   3>…Group by 列
5   4>…Having 筛选条件
6   6>…Order by 列

查看当前带有哪些数据库

mysql> SHOW DATABASES;

2.1 查(列名有空格的情景)

1
2
SELECT [ last name]
FROM Customers

用方括号将有空格的列名括起来。
PS: MySQL立见成效重音符`(~)按钮。Oracle用双引号。

2.2 增

1 INSERT INTO tablename
2 (columnlist)
3 VALUES
4 (RowValues1)
5 (RowValues2)
6 (repeat any number of times)

一连数据库

mysql> USE 数据库名

查询顺序,SQL履行顺序^2):

1
2
3
4
5
6
Select -1>选择列,-2>distinct,-3>top
  1>…From 表
  2>…Where 条件
  3>…Group by 列
  4>…Having 筛选条件
  6>…Order by 列

2.3 改

1 UPDATE  table
2 SET column1=expression1,column2=expression2(repeat any number of times)
3 WHERE condition

查阅当前数据库中隐含哪些表

mysql> SHOW TABLES;

mysql> DESCRIBE 表名;

2.2 增

1
2
3
4
5
6
INSERT INTO tablename
(columnlist)
VALUES
(RowValues1)
(RowValues2)
(repeat any number of times)

2.4 删

1 DELETE
2 FROM table
3 WHERE condition

去除前能够印证一下:

1 SELECT 
2 COUNT(*)
3 FROM table
4 WHERE condition

风华正茂旦想要删除全部的行,能够:

 1 DELETE FROM table 

或者

 1 TRUNCATE TABLE table 

TRUNCATE TABLE优势在于速度更加快,但是不提供记录事务的结果。
此外叁个分化点是,TRUNCATE TABLE双重安装了用于自增型的列的脚下值,DELETE不会。

展现表属性

mysql> SHOW COLUMNS FROM 表名;

该命令将会输出钦赐表的各样字段的字段名、数据类型、非空节制、是否是主键和暗中认可值等新闻。

2.3 改

1
2
3
UPDATE  table
SET column1=expression1,column2=expression2(repeat any number of times)
WHERE condition

三、别名

关键字:AS

展现服务器警示或错误消息

mysql> SHOW ERRORS;

mysql> SHOW WARNINGS;

2.4 删

1
2
3
DELETE
FROM table
WHERE condition

除去前能够作证一下:

1
2
3
4
SELECT 
COUNT(*)
FROM table
WHERE condition

 

若是想要删除全数的行,能够:

1
DELETE FROM table

 

或者

1
TRUNCATE TABLE table

 

TRUNCATE TABLE优势在于速度越来越快,可是不提供记录事务的结果。
除此以外一个差别点是,TRUNCATE TABLE再度设置了用于自增型的列的当前值,DELETE不会。

3.1 总计字段

运用计算字段能够做如下的事体:

  • 选拔特定的单词或然数值
  • 对单个或许七个列进行测算
  • 把列和直接量组合留意气风发道。

退出数据库

mysql> EXIT/QUIT;

三、别名

关键字:AS

3.2 直接量

这些直接量和表中的数额还没有其他关联,正是为着验证所用,上边那体系型的表明式就称为直接量(literal value)。
必威 1

 1 SELECT '直接量' AS `类型`,firstname,lastname 2 FROM `customers` ; 

必威 2

如图,结果中央市直机关接量就在一列中了。

新建数据库

mysql> CREATE DATABASE 数据库名;

平常SQL语句不区分朗朗上口写,但提出将主要字大写,变量和多少小写。

3.1 总结字段

应用总结字段能够做如下的事体:

  • 选择特定的单词只怕数值
  • 对单个也许七个列进行总计
  • 把列和直接量组合在协同。

3.3 算数运算

例子1:

 1 SELECT num*price AS total 2 FROM orders 

例子2:

1 SELECT  firstname+' '+lastname AS 'fullname'
2 FROM users

在MySql中年花甲之年是即使用CONCAT函数:

1 SELECT OrderID,FirstName,LastName,
2 CONCAT(FirstName,' ',LastName) AS 'fullname'
3 FROM orders

新建数据表

mysql> CREATE TABLE 数据表名
    -> (
    -> 列名1 数据类型(数据长度) PRIMARY KEY,        --主键
    -> 列名2 数据类型(数据长度) NOT NULL,        --非空约束
    -> 列名3 数据类型(数据长度) DEFAULT '默认值',        --默认值约束
    -> UNIQUE(列名a),        --唯一约束
    -> CONSTRAINT 主键名 PRIMARY KEY (列名a,列名b,...),        --复合主键
    -> CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 表名(主键名)        --外键
    -> );

注意最终一个列名后边不加逗号”,”。

3.2 直接量

本条直接量和表中的数码没有别的涉及,正是为着表明所用,上面那连串型的表明式就称为直接量(literal value)。
必威 3

1
2
SELECT '直接量' AS `类型`,firstname,lastname 
FROM `customers` ;

必威 4
如图,结果中央行政单位接量就在一列中了。

3.4 别名

1)列的外号

 1 SELECT firstname AS fn 2 FROM customers 

2) 表的别称

 1 SELECT firstname 2 FROM customers AS cu 

说明:

  1. 列的小名是为着展现用的,小名会作为查询结果的表头,不可能在WHERE中利用列的别称,会出错!!!
  2. 表的昵称确实是为着便于操成效的,可以在WHERE中动用列的小名实行!

数据类型

数据类型 大小(字节) 用途 格式
INT 4 整数 -
FLOAT 4 单精度浮点数 -
DOUBLE 4 双精度浮点数 -
ENUM - 单选 ENUM(‘a’,’b’,’c’)
SET - 多选 SET(‘1’,’2’,’3’)
DATE 3 日期 YYYY-MM-DD
TIME 3 时间点或持续时间 HH:MM:SS
YEAR 1 年份值 YYYY
CHAR 0~255 定长字符串 -
VARCHAR 0~255 变长字符串 -
TEXT 0~65535 长文本数据 -

3.3 算数运算

例子1:

1
2
SELECT  num*price AS total
FROM orders

 

例子2:

1
2
SELECT  firstname+' '+lastname AS 'fullname'
FROM users

 

在MySql中接二连三若是用CONCAT函数:

1
2
3
SELECT OrderID,FirstName,LastName,
CONCAT(FirstName,' ',LastName) AS 'fullname'
FROM orders

 

四、使用函数

函数要有意气风发组圆括号跟在根本字背后,圆括号告知大家,那是二个函数!

CHAR和VARCHAR的区别:

CHA普拉多的长度是原则性的,而VARCHA君越的尺寸是能够转移的。

举例,存款和储蓄字符串"abc",对于CHAWrangler(10),表示存款和储蓄的字符将占拾三个字节(包蕴7个空字符),

而相仿的VARCHAXC90(12)则只占用3个字节的长短,12只是最大值,

当你存款和储蓄的字符小于12时,按其实尺寸存款和储蓄。

3.4 别名

1)列的小名

1
2
SELECT firstname AS fn
FROM customers

 

2) 表的小名

1
2
SELECT firstname 
FROM customers AS cu

 

说明:

  1. 列的别称是为着呈现用的,别称会作为查询结果的表头,不能够在WHERE中央银行使列的外号,会出错!!!
  2. 表的小名确实是为了方便操成效的,能够在WHERE中利用列的外号进行!

4.1 字符函数

ENUM和SET的区别:

ENUM类型的数据的值,必须是定义时枚举的值的其中之一,即单选,而SET类型的值则可以多选。

四、使用函数

函数要有生龙活虎组圆括号跟在重要字背后,圆括号告知我们,那是五个函数!

LEFT&RIGHT

LEFT(CharacterValue,NumberOfCharacters)
含义:选择CharacterValue字段的左侧NumberOfCharacters多少个字符。
ps:LX570IGHT是左边手几个字符。

安插数据

INSERT INTO 数据表名(列名1,列名2,列名3) VALUES(值1,值2,值3);

VALUES中的值为对应列属性的值,此中CHAPRADO,VARCHA宝马X3,TEXT,DATE,TIME,ENUM等品种的数目须求单引号修饰。

4.1 字符函数

LTRIM&RTRIM

LTRIM(CharacterValue)
能够去除左侧开首的空格。RT讴歌ZDXIM作用相仿。

SQL约束

LEFT&RIGHT

LEFT(CharacterValue,NumberOfCharacters)
含义:选择CharacterValue字段的侧边NumberOfCharacters多少个字符。
ps:中华VIGHT是左边手多少个字符。

SUBSTRING

SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
意思:选拔从开首地点(满含),N个长度的字符。

1 SELECT 
2 SUBSTRING('thewhitegoat',4,5) AS 'The Answer'

返回:white

主键

PRIMARYKEY KEY

CONSTRAINT 主键名 PRIMARY KEY (列名a,列名b,...)

三个表中能够有五个主键。

LTRIM&RTRIM

LTRIM(CharacterValue)
能够去除左侧初步的空格。RT大切诺基IM成效相似。

4.2 日期/时间函数

外键

CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 数据表名 (被参考的主键名)

各样表能够由八个外键,每种外键必得参照另叁个表中的主键,被外键限定的列的取值必需在它参考的主键的列中有对应的值。

SUBSTRING

SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
意思:选用从起先地点(包含),N个长度的字符。

1
2
SELECT 
SUBSTRING('thewhitegoat',4,5) AS 'The Answer'

 

返回:white

GETDATE

 1 DATEPART(datepart,DateValue) 

datepart能够是不菲两样的值,如下皆以有效值:

  • year
  • quarter
  • month
  • dayofyear
  • day
  • week
  • weekday
  • hour
  • minute
  • second

非空节制

NOT NULL

MySQL中违反非空约束只会警示不会报错。

4.2 日期/时间函数

DATEDIFF

可以让大家得到放肆三个日子之间相距的造化(或周数、月数等)。

 1 DATEDIFF(datepart1,startdate1,startdate2) 

 

DATEDIFF Function Expression Resulting Value
DATEDIFF(day,’7/8/2009’,’8/14/2009’) 37
DATEDIFF(week,’7/8/2009’,’8/14/2009’) 5
DATEDIFF(month,’7/8/2009’,’8/14/2009’) 1
DATEDIFF(year,’7/8/2009’,’8/14/2009’) 0

PS:MySql中,DATEDIFF函数只允许大家总结多个日子之间的天命,假诺想要获得叁个正数,截止的日期平常要作为第一个参数:

 1 DATEDIFF(enddate,startdate) 

Oracle中未有等价函数

私下认可值节制

DEFAULT '默认值'

字符类型暗许值使用单引号括起。

GETDATE

1
SELECT GETDATE()

再次回到当前几日子和岁月。
PS:在MySql中,等价函数是NOW,在Oracle中是CURRENT_DATE

4.3 数值函数

唯生龙活虎限定

UNIQUE(列名)

该表中该列值不可重复。

本文由必威发布于必威-数据,转载请注明出处:以备日后复习之用必威:,那么这个字段就是A表

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。