一、基础知和表内操作语法
1.sql语句对大小写不敏感!!!
- SELECT - 从数据库表中获取数据:select * from (columns/tables/databases);
- UPDATE - 更新数据库表中的数据:
- DELETE - 从数据库表中删除数据
- INSERTinsertinto INTO - 向数据库表中插入数据
2.phpstudy下mysql数据库链接:在mysql文件夹下bin文件夹开启命令行,输入mysql -u root(默认数据库账号) -p root(默认数据库密码)
3.展示数据库:show databases;选择数据库:use database_name;
展示表名:show tables from database_name; select * from database_name;
例如:select username from users;/ /从users表内username列选出username的值
4.where子句(限定条件):如需有条件地从表中选取数据,可以缩小范围(可以使用运算符进行匹配,like--搜索某种模式、between--在某个范围内)
5.distinct关键字:对表中重复值不再输出(仅希望列出不同值)
例如:select distinct username from users;//重复出现的username列下的数据将不再列出
6.order by语句:根据指定的列对结果集进行排序,倘若列不存在则将会报错,这也是sql注入爆列数的原理,默认按照升序对记录进行排序,如若要使用降序可用desc关键字在对应列末添加
7.在某张表中插入某一行数据:
完整一行数据:insert into table_name values(column1_value,column2_value,...);
特定列下特定数据:insert into table_name(column1_name,column4_name) values('column_value1','column4_value')
例如:table_name=students,columns_name=["name","sex","age","city"]
students:
name | sex | age | city |
lihua | boy | 17 | beijing |
zhangsan | boy | 18 | nanchang |
insert into students values("hanmei","gril",19,"guangdong");
于是新增行:
hanmei | gril | 19 | guangdong |
8.在某张表中更新某行某列数据:
update table_name set target.column_name = 'new_value' where column_name='value';
例如:table_name=students,target.column_name=city,column_name='name'
update students set city='yunnan' where name='zhangsan';
于是更新后:
zhangsan | boy | 18 | yunnan |
8.删除某张表中的某一行或者所有行:
某一行:delete from table_name where column_name=value;
所以行:delete from table_name; delete *from table_name;
例如:table_name=students,column_name=name;
delete from students where name='zhangsan';
于是删除后:
name | sex | age | city |
lihua | boy | 17 | beijing |
二、进阶教程
了解ddl语句
- CREATE DATABASE - 创建新数据库:create database <name>;
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE <name> ADD <column_name> DATATYPE - 创建新列
- ALTER TABLE <name> DROP COLUMN <column_name> - 删除列
- ALTER TABLE <name> ALTER COLUMN <column_name> DATATYPE - 更改列属性
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
students表:
name | sex | age | city |
lihua | boy | 17 | beijing |
zhangsan | boy | 18 | nanchang |
hanmei | gril | 19 | yunnan |
lisa | gril | 18 | nanjing |
1.TOP子句:用于规定要返回数据的数目,可以在后面添加限定条件
按数量返回数据:select top number * from table_name;
按比例返回数据:select top 50 percent * from table_name;
例如:在students表中选取百分之五十的城市在北京的数据:select top 50 percent * from students where city='beijing';
2.like操作符:用于在where子句中搜索特定模式,%可用于定义通配符;
select column_name from table_name where column_name like pattern;
例如:从students表搜索城市为n开头的学生
select * from students where city like 'n%';
查询结果:
搜索城市为g结尾的学生
select *from students where city like '%g';
拓展:通配符(搜索数据时匹配的模式)
通配符 | 描述 |
---|---|
% | 代表零个或多个字符(%sa%,选取名字中含有sa字符串的人) |
_ | 仅替代一个字符(_ihua,选取名字第一个字符后是ihua的人) |
[charlist] | 字符列中的任何单一字符([abc],选取名字中含有abc其中任意字符的人) |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一字符([^abc],选取名字不含abc其中任意字符的人) |
4.in操作符:可以在where子句中匹配多个值
select column_name from table_name where column_name in (value1,value2,...);
例如:select sex from students where name in ('lihua','hanmei');
between操作符:也在where子句中使用,会取介于两值的数据范围,包含开始数据不包含结束数据[value1,value2),select * from table_name where column_name between 'value1' and 'value2';
例如选取不在17-18岁的学生:select * from students where age not between 17and 18;
5.join关键字
新建一个relation表:create table relation(id int(20),tel char(20),qq char(20));
当需要使用两个或两个以上数据的表时,可以使用join关键字返回数据,数据库的表可以通过主键(每张表中存在的相同的一个列)联系起来,如上所示,students表和relation表通过id列联系起来
一般表示:select table1_name.column1_name,table2_name.column1_name from table1_name,table2_name where table1.<主键名>=table2.<主键名>;
join关键字表示:select table1_name.column1_name,table2_name.column1_name from table1_name join table2_name on table1.<主键名>=table2.<主键名>;
例如:select students.name,students.age,relation.tel from students join relation on students.id=relation.id;
可以在 join关键字前加入left(左匹配)、right(右匹配)、full属性(全匹配),将匹配输出左或者右的全部值,包括空值
例如:select students.name,students.age,relation.tel from students right join relation on students.id=relation.id;
6.union操作符:用于联合执行两个或多个sql语句并输出结果集
7.sql约束(not null):在创建表时规定数据类型后可在句末添加,表明该列若没有数值则将无法插入其他列的数据,也就是说从可选项变成了必选项;
类似的还有foreignkey约束(约束两张表的链接动作,防止非法数据插入外表)、check约束(规定列只允许特定的值)、defult约束(无值则创建默认值)、primarykey约束(设置主键)...
web小白学习笔记