在MySQL5.0的基础上学习了SQL基础语法,记录如下:
SQL:Structured Query Language 结构化查询语句,用于访问和处理数据库的标准的计算机语言
在安装MySQL5.0后,使用cmd通过以下命令进入mysql:
C:\Users\Administrator>mysql -u root -p
Enter password:
在本机登陆时,使用上诉命令,-u后面为用户名,输入密码后进去mysql。
下面我们来创建一个数据库basketball,数据库里创建一个team的表格,表格内容如下:
num | name | position |
1 | 张三 | PF |
2 | 李四 | SF |
3 | 王五 | PG |
4 | 赵六 | SG |
一、数据库管理
1.1 创建数据库:
CREATE DATABASE 数据库名 ;
CREATE DATABASE basketball ;
这里我们创建一个名为basketball的数据库。
1.2 查看数据库列表:
SHOW DATABASES ;
SHOW DATABASES ;
1.3 删除数据库:
DROP DATABASE 数据库名 ;
1.4 修改数据库名(MySQL中无法使用):
RENAME DATABASE 旧数据库名 TO 新数据库名 ;
二、使用数据库
USE 数据库名 ;
USE basketball ;
在出现Database changed后,代表我们进入该数据库。
三、操作表
3.1 创建表:
CREATE TABLE 表名(字段1 字段1类型,字段2 字段2类型);
CREATE TABLE team (num integer(10),name varchar(20),position varchar(10)) ;
创建一个名为team的表,表中的字段有integer类型的num,varchar类型的name,varchar类型的position。
常用字段类型:
整型:int(size)/integer(size)
浮点型:decimal(size,d)/numberic(size,d)
size:数字位数 d:小数位数
字符型:char(size) : 固定长度字符串
varchar(size) :可变长度字符串
TEXT :长度更长的字符串
size:字符串长度
日期:date(yyyyMMdd)
date(yyyyMMdd HH-mm-ss)
year(yyyy)
3.2 查看表格
查看表列表:SHOW TABLES ;
查看表的字段结构:DESCRIBE 表名 ; 或 DESC 表名 ;
DESCRIBE team ;
查看team中的字段结构。
3.3 删除表:
DROP TABLE 表名 ;
DROP TABLE team ;
删除team表。
3.4 修改表名:
ALTER TABLE 表名 RENAME 新表名 ;
ALTER TABLE team RENAME newteam ;
将team的表名改为newteam。
3.5 向表中增加一列字段:
ALTER TABLE 表名 ADD 字段名 字段类型 ;
ALTER TABLE team ADD date date ;
向team表中添加一个date类型的date字段。
3.6 修改字段类型:
ALTER TABLE 表名 MODIFY 字段名 字段类型 ;
ALTER TABLE team MODIFY position varchar(20) ;
将team表中的position的varchar(10)改为varchar(20)。
3.7 修改字段名(同时也可以修改类型):
ALTER TABLE 表名 CHANGE COLUMN 旧字段名 新字段名 新字段类型 ;
ALTER TABLE team CHANGE COLUMN date datetime date ;
修改team表中的date为datetime,并将datetime设置为date类型。
3.8 删除某字段:
ALTER TABLE 表名 DROP COLUMN 字段名(列名);
ALTER TABLE team DROP COLUMN datetime ;
删除掉team中的datetime字段。
3.9 修改列位置:
ALTER TABLE 表名 MODIFY 字段1 字段1类型 AFTER 字段2 ;
ALTER TABLE team MODIFY name varchar(20) AFTER position ;
将team表中的name字段放到position后面。
四、操作数据
4.1 插入数据:
插入部分数据:INSERT INTO 表名(字段2,字段4...) VALUES(字段2的值,字段4的值...) ;
INSERT INTO team(name position) VALUES('张三','PF') ;
将数据张三和PF分别插入到team表的name和position中。
插入所有数据:INSERT INTO 表名 VALUES (字段1的值,字段2的值...) ;
INSERT INTO team VALUES(2,'李四','SF') ;
将数据2,李四,SF分别插入到team表中。
4.2 查询数据:
4.2.1 从一张表中查询出指定列的数据:
SELECT 字段1,字段2... FROM 表名 ;
SELECT name,position FROM team ;
查询team表中的name和position字段下的数据。
4.2.2 从一张表中查询出所有列的数据:
SELECT * FROM 表名 ;
SELECT * FROM team ;
查询team表中的所有数据。
4.2.3 选择条件查询:
查询指定列名中为某值的所有列的所有数据:SELECT * FROM 表名 WHERE 列名 = 某值 ;SELECT * FROM team WHERE num = 2 ;
查询team表中的num=2的所有数据。
4.2.4 AND、OR运算符:
需要同时满足的条件查询:SELECT * FROM 表名 WHERE 列1 = 值1 AND 列2 = 值2 ;
SELECT * FROM team WHERE num = 3 AND position = 'PG' ;
查询team表中同时满足num=3并且position=PG的所有数据。
任意满足一个的条件查询:SELECT * FROM 表名 WHERE 列1 = 值1 OR 列2 = 值2 ;SELECT * FROM team WHERE num = 4 OR name = '王五' ;
查询team表中满足num=4和name=王五的所有数据。
4.2.5 IN关键字:
查询一列中多个值:SELECT * FROM 表名 WHERE 列 IN(值1,值2...) ;
SELECT * FROM team WHERE num IN(2,3);
查询team表中num为2,3的所有数据。
4.2.6 排序:
按某一列的升序排列查询:SELECT * FROM 表名 ORDER BY 列名 ;
SELECT * FROM team ORDER BY name ;
查询team表中按name升序排列的所有数据。
按某一列的降序排列查询:SELECT * FROM 表名 ORDER BY 列名 DESC ;SELECT * FROM team ORDER BY name DESC ;
查询team表中按name降序排列的所有数据。
tips:如果排序所用列值一样,将会排在一起,然后以所查询的下一列的升序排列。4.2.7 唯一值:
查询一列中所包含的所有的值,重复出现的不另计:SELECT DISTINCT 列名 FROM 表名 ;
SELECT DISTINCT name FROM team ;
查询team表中name出现过的数据。
4.2.8 LIMIT:
查询需要返回的行数:SELECT * FROM 表名 LIMIT 需要返回的行数 ;
SELECT * FROM team LIMIT 3 ;
查询team表中截止第3行的数据。
查询从下标起返回的行数:SELECT * FROM 表名 LIMIT 下标(从0 开始数),需要返回的行数 ;SELECT * FROM team LIMIT 1,2 ;
查询team表中从第2行往下数2行的数据。
4.3 更新(修改)数据:
修改表中数据:UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 指定数据 ;
UPDATE team SET position = 'C' WHERE name = '赵六' ;
更改team表中name为赵六的position为C。
tips:如果不带有条件限定将会导致此表中所有数据的此字段都修改为新值。4.4 删除数据:
删除表中符合条件的每一行的数据:DELETE FROM 表名 WHERE 列名 = 某值 ;
DELETE FROM team WHERE num = 4 ;
删除team表中num=4这一行的数据。
不带有WHERE条件,将删除表中所有数据。4.5 模糊查询:
使用少量数据匹配出我们需要查询的数据,需要使用LIKE关键字和通配符。4.5.1 通配符:
在查询中,我们可以使用通配符去代替我们需要填入的字符。
a)‘%’用来匹配一个或多个字符。
b)‘_’ 用来匹配一个字符。
c)[多个字符],用来匹配多个字符中的一个(MySQL不支持)。
d)[!多个字符],用来匹配非多个字符中的一个(MySQL不支持)。
tips:通配符与LIKE必须一起使用。
4.5.2 LIKE关键字:
SELECT * FROM 表名 WHERE 列名 LIKE '_n%' ;
SELECT * FROM team WHERE position LIKE '%G' ;
查询team表中position下包含有G的数据。