SQL学习之一基础命令
一、SQL语法
1、数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识,表包含带有数据的行。
2、大小写
SQL对大小写不敏感。
3、SQL语句后的分号
某些数据库要求在每条SQL命令的末尾使用分号,比如mysql。
4、SQL的DML和DDL
可以把SQL分为两个部分:DML(data manipulation language数据操作语言)和DDL(data definition language数据定义语言)
查询和更新数据的指令构成了SQL的DML部分:
select -- 从数据库表中读取数据
update -- 更新数据库表中的数据
delete -- 从数据库表中删除数据
insert into -- 向数据库表中插入数据
SQL的DDL部分指创建或删除表格,更新表结构,定义索引,规定表之间的链接,施加表间的约束的命令。
create database -- 创建新数据库
alter database -- 修改数据库
create table -- 创建新表
alter table -- 更新表结构
drop table -- 删除表
create index -- 创建索引
drop index -- 删除索引
二、创建一个实例
以MySQL为例:
mysql> create database study;mysql> use study;mysql> create table students(id int auto_increment primary key,name varchar(255),sex char(10));mysql> insert into students (name,sex) values ('zhangsan','man'),('lisi','woman'),('wangwu','man'),('zhaoliu','woman');mysql> select * from students;
注意:在MySQL中值除了数字之外,都需要用''包含。
三、基础SQL语句
1、select:用于从表中获取数据。
格式:select 列名 from 表名;
例子:
①从students表中选取所有的学生姓名:
mysql> select name from students;
②从students表中选取所有的学生姓名和性别:
mysql> select name,sex from students;
多个列名之间用逗号隔开。
③查看students表中的所有数据:
mysql> select * from students;
"*"代表所有的列名。
2、distinct:在表中,可能包含有重复的数据,但是有时希望仅仅列出不同的值。这时使用distinct返回唯一不同的值。
格式:select distinct 列名 from 表名;
例子:
①从students表中列出所有的性别(……):
mysql> select distinct sex from students;+-------+| sex |+-------+| man || woman |+-------+ man和woman各被列出一次。
3、where:用于有条件地从表中获取数据,通常和select一起使用。
格式:select 列名 from 表名 where 列名 运算符 值;
这里的运算符包含=(等于)、<>(或!=,不等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于)、between(在某个范围内)、like(以某种模式)
例子:
①从students表中列出所有性别为"man"的学生:
mysql> select name from students where sex = 'man';
这样会列出'zhangsan','wangwu'二个值。
②从students表中列出所有ID不超过3的学生:
mysql> select name from students where id <= 3;
这样会列出'zhangsan','lisi','wangwu'三个值。
③从students表中列出所有ID在2和3之间的学生:
mysql> select name from students where id between 2 and 3;
这样会列出'lisi','wangwu'二个值。不同的数据库对两个边界值(2和3)的处理方式不同,mysql会列出包含2和3的列,但是有些数据库不会列出。
4、and和or:用于对一个以上的记录进行过滤。可以在where子句中把两个或多个条件结合起来。
例子:
①从students表中列出ID不超过3,且性别为女的学生姓名:
mysql> select name from students where id <=3 and sex='woman';
这样会列出'lisi'一个值。
5、order by:用于对获取的结果进行排序。默认是对结果进行升序排序,可以使用desc关键字对结果进行降序排序。
例子:
①对students表中的姓名按照字母顺序显示:
mysql> select name from students order by name;
②对students表中的姓名按照id由大到小显示:
mysql> select id,name from students order by id desc;
6、insert into:用于向表中插入新的行(数据)。
格式:insert into 表名 values (值1,值2,……);
向指定的列插入数据:insert into 表名 (列1,列2,……)values (值1,值2,……);
例子:
①向students表中插入一行,id 5,姓名 qianqi,性别 woman:
mysql> insert into students values (5,'qianqi','woman');
②向students表中插入两行:
mysql> insert into students (name,sex) values ('sunba','man'),('wujiu','man');
一个()里是一行,多行用逗号","隔开。
7、update:用于修改表中的数据。
格式:update 表名 set 列名=新值 where 列名=某值;两个列为不同的列。
例子:
①将students表中zhangsan的性别改为woman:
mysql> update students set sex='woman' where name='zhangsan';
8、delete:用于删除表中的行(数据)。
格式:delete from 表名 where 列名=值;
例子:
①从students表中删除姓名为wujiu的行:
mysql> delete from students where name='wujiu';
②删除students表中所有的行:
mysql> delete from students;或者mysql> delete * from students;
这样只会删除表中的所有数据,并不会删除表结构、索引、属性。
9、alter:用于在数据表中添加、修改、删除列,修改表名称。
①向表中添加一列:
格式:alter table 表名 add 列名 数据类型;
例子:向students表中添加一列'age',数据类型'int':
mysql> alter table students add age int;
②修改表中某一列的列名:
格式:alter table 表名 change 现在的列名 修改后的列名 数据类型;
例子:修改students表中'name'为'perons':
mysql> alter table students change name persons varchar(255);
③修改表中某一列的数据类型:
格式:alter table 表名 modify 列名 修改后的数据类型
例子:将students表中persons的数据类型改为char(100):
mysql> alter table students modify persons char(100);
④修改表名
格式:alter table 表名 rename 修改后的表名;
例子:将students表的表名改为learners:
mysql> alter table students rename learners;
⑤删除表中的某一列
格式:alter table 表名 drop 列名;
例子:删除learners表中的age列:
mysql> alter table learners drop age;
10、drop:用来删除数据库表、索引。
①删除数据库:
格式:drop database 数据库名
②删除数据表:
格式:drop table 数据表名
③删除索引,用于MySQL的语法:
格式:alter table 表名 drop 索引名称
11、primary key:主键,唯一标识数据库表中的每条记录。
主键必须唯一,且不能包含空值。每个表都应该有一个主键,并且每个表只能有一个主键。
在实例中是把id设为了主键,在创建表的时候在id后面加上primary key。
12、auto_increment:设置主键自增长。