- selet database(); 显示现在所在的库
- desc +表名用来显示表的状态,包括列名(column name),各个列的类型(Type),各个列的值类型,主外键(Key),默认值,其他;
- sql注入时的注意点:
1.注释符#,在url中#号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。将#号改成url的编码%23就可以了
2.注释符–与--+的关系:–注释符要起作用后面要有一个空格,而–+中的+号在url中相当于空格。
4.escape作用:escape ‘escape_character’
允许在字符串中搜索通配符,将其作为普通字符来看待,放在escape_character的下一个通配符将被看做普通字符
eg:select column_name from table_name where column_name like ‘%gs_’ escape ‘s’
条件是‘任意个字符g_’下划线是普通字符,我不是通配符。
5.ifnull
ifnull(column_table,指定的值)
判断某字段或表达式是否为null,如果为null返回指定的值,如果不是,则返回原本的值。
6.where后面不可以跟count函数
7.判断行数:
2) select count(*) from table_name;
3) select count(1)from table_naem;
4) select count(‘字段’)from table_naem;
5) select 数字 from table_name; 可以显示出表的行数,而不是计算好的
8.value与values的区别:两者只是执行效率不同
value在插入多行数据时比较快,而values在插入单行数据时较快
总结:在插入数据时value和values都可以使用,没有有太大的区别
9.mysq在lwindows下是不区分大小写的,包括mysql语句,库名,表名,列名,字段中的数据;
注:sql中的索引从1开始,而不是0,但也有特例如分页查询limit是从1开始的
mysql常见命令
1.show databases(); 查看当前所有的数据库
2.creat database+库名(database);创建一个库
3.use +库名(database);转到要使用的库下
4.creat table+表名(列名 列类型,列名 列类型,…);在当前库下创建一个表
5.show tables;查看当前库的所有表
6.show tables from 库名;查看其他库的所有表
7.select 列名1,列名2,…(*) from 表名(table);从表中查看列1,列2…( *表示所有)的数据
8.select version();查看当前mysql的版本
DML语言(数据操作语言)
插入:insert
方法一:insert into table_name(列名1,列名2,…) value(值1,值2,…);
方法二:insert into table_name set 列名1=值1,列名2=值2,列名3=值3,…;
1)插入的值得类型要与列的类型一致或兼容
2)列数与值的个数必须保持一致
3)列的顺序可以互换
4)可以省略列名,美人为所有列,而且列的顺序和表中的列的顺序一致
两种方法的区别:
1…方法一支持插入多行,方法二不支持
2…方法一支持子查询,方法二不支持
修改:update
update table_name set 列=新值,列=新值,… where 筛选条件;
删除
方法一:delete
delect from table_name where 筛选条件;
方法二:truncate
truncate table 表名;(不允许出现where)即全部清空
区别:
1)delete 可以加where条件,truncate不能加
2)truncate删除,效率高一点点
3)假如要删除的表中有自增长列,如果用delete删除后,在插入数据,自增长列的值从断电开始,而truncate删除后,在插入数据,自增长列的值从1开始