net start mysql
net stop mysql
mysql -uroot -ppssword mysql -uroot -p3307 -ppssword
mysqladmin -uroot - p123456 password 123
create user 'lisi'@'%' identified by '123456'
grant select,insert on test.user to 'lisi'@'%' 授予李四查询和插入的权限,生效范围是test数据库下的user表。需要注意的是如果不对用户授权,用户都可能无法登陆。
set password for 'lisi'@'%' = password('lisi') 设置lisi的用户密码为lisi
drop user 'lisi'@'%'
create database db_name
show databases
drop database db_name
use db_name
select version()
select now()
create table table_name( id int primary key auto_increment, name varchar(50) not null );
insert into table_name values (value1,value2),(value1,value2); 可以一次性插入多个值,需要注意的是值必须与属性列一一对应
select * from table_name
delete from table_name where 列名=value;
update table_name set 列名1=value1 where 列名2=value2;
alter table table_name add 属性列 类型 约束
alter table table_name drop column_name
alter table table_name add primary key(id)
alter table table_name add index 索引的名字 (属性列) 索引的名字一般是 表名_属性名
alter table table_name add unique 索引的名字 (属性列)
alter table table_name drop index 索引名
mysqldump -uroot -ppassword 数据库的名字 > 导出路径\表名.sql
mysqldump -uroot -ppassword 数据库的名字 表名 > 导出路径\表名.sql
mysql -uroot -ppassword 库名 < sql所在的路径
show engines; show variables like '%storage_engine%';
1. show相关 1. show databases : 返回可用的数据库列表 2. show tables : 返回当前选择的数据内可用表的列表 3. show columns from tab_name : 返回表的所有字段 4. describe tab_name : 同上 5. show status : 显示广泛的服务器状态信息 6. show create database/table : 显示创建特定数据库或表的mysql语句 7. show errors/warnings : 显示服务器错误或警告信息 8. help show : 显示允许的show语句 2. 查询相关 1. select distinct col_name from tab_name : 查询不同的值,也就是去重 2. select col_name from tab_name limit start_index, rows : 限制查询结果(一般用于分页查询),后面的参数代表开始索引和查询的行数 3. select col_names from tab_name order by col_names : 默认是升序排序,可以使用desc来改变排序规则,也可以指定多个列来进行排序(可以使用非查询列来进行排序) 4. select col_names from tab_name where 条件 : 过滤查询 1. where子句的操作符 1. = : 等于 2. <> : 不等于 3. != : 不等于 4. < : 小于 5. <= : 小于等于 6. > : 大于 7. >= : 大于等于 8. between 1 and 2 : 在指定的两个值之间 5. null的判断 : 使用 is null进行判断(注意null与0,空字符串,仅仅包含空格是不相同的) 6. 多个条件同时匹配中间用and连接,匹配任一条件中间用or连接,二者并存的时候需要考虑次序问题,一定要加上括号,避免产生歧义 7. select col_names from tab_name where col_name in (1,2) : 表示或1或2都可以,也就是or的简单写法 8. not的使用,not in找出与条件列表不匹配的行 9. like,%,_的使用,like表示模糊查询,%表示匹配任意字符出现任意次数(包括0个字符),_匹配任意的单个字符 1. 不要过度使用通配符,通配符会消耗很大的内存,花费时间更长. 3. 正则相关 1. 正则与like的区别 1. like匹配整个列,如果被匹配的文本在列值中出现,like将不会找到它,相应的行也不会返回 2. regexp在列值内匹配,如果被匹配的文本在列值中出现,regexp将会找到它,相应的行被返回 3. 例子: 1. select prod_name from products where prod_name like '1000'; 2. select prod_name from products where prod_name regexp '1000' 3. 上面两个sql语句查询结果是不相同,如果数据库中在prod_name为1000的行 2. 点的使用,mysql中的.是一个特殊字符,表示匹配任意一个字符. 1. select prod_name from products where prod_name regexp '.000'; 2. select prod_name from products where prod_name like '%000%'; 3. 上面两个sql的查询结果是相同的. 3. 正则表达式or的匹配的多种写法 1. select prod_name from products where prod_name regexp '1000|2000'; /*匹配其中之一*/ 2. elect prod_name from products where prod_name regexp '[123] ton'; /*匹配几个字符之一*/ 3. select prod_name from products where prod_name regexp '[1-5] ton'; /*匹配范围,匹配1到5之间的任意数字 + ton*/ 4. 匹配特殊字符,也就是匹配.等等 1. 使用转义字符,一般正则表达式的转义字符是 \,但是在mysql中要求两个,也就是\\,一个是mysql解释,一个是正则表达式解释 1. select prod_name from products where prod_name regexp '\\.';/*匹配特殊字符需要使用转义字符,比如说:\\.匹配. \\-匹配- \\\匹配\ */ 5. 字符类(使用过程中注意的是要使用[]进行包裹,也就是使用两个中括号才可以正确匹配,即[[:digit:]]): <table> <tr> <th>类</th> <th>说明</th> </tr> <tr> <td>[:alnum:]</td> <td>任意子母和数字(同[a-za-z0-9])</td> </tr> <tr> <td>[:alpha:]</td> <td>任意字符(同[a-za-z])</td> </tr> <tr> <td>[:blank:]</td> <td>空格和制表符(同[\\t])</td> </tr><tr> <td>[:cntrl:]</td> <td>ascii控制字符(ascii0到31和127)</td> </tr><tr> <td>[:digit:]</td> <td>任意数字(同[0-9])</td> </tr><tr> <td>[:graph:]</td> <td>与[:print:]相同,但不包括空格</td> </tr><tr> <td>[:lower:]</td> <td>任意小写子母(同[a-z])</td> </tr><tr> <td>[:print:]</td> <td>任意可打印字符</td> </tr><tr> <td>[:punct:]</td> <td>既不在[:alnum:]又不在[:cntrl:]中的任意字符</td> </tr><tr> <td>[:space:]</td> <td>包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])</td> </tr><tr> <td>[:upper:]</td> <td>任意大写子母(同[a-z])</td> </tr> <tr> <td>[:xdigit:]</td> <td>任意十六进制数字(同[a-fa-f0-9])</td> </tr> </table> 5. 重复元字符 <table> <tr> <th>元字符</th> <th>说明</th> </tr> <tr> <td>*</td> <td>0个或多个匹配</td> </tr> <tr> <td>+</td> <td>一个或多个匹配(等于{1,})</td> </tr> <tr> <td>?</td> <td>0个或一个匹配(等于{0,1})</td> </tr><tr> <td>{n}</td> <td>指定数目的匹配</td> </tr><tr> <td>{n,}</td> <td>不少于指定数目的匹配</td> </tr><tr> <td>{n,m}</td> <td>匹配数目的范围(m不找过255)</td> </tr> </table> 6. 定位符 <table> <tr> <th>元字符</th> <th>说明</th> </tr> <tr> <td>^</td> <td>文本的开始</td> </tr> <tr> <td>$</td> <td>文本的结束</td> </tr> <tr> <td>[[:<:]]</td> <td>词的开始</td> </tr><tr> <td>[[:>:]]</td> <td>词的结尾</td> </tr> </table> 7. 上面三种的举例: 1. select prod_name from products where prod_name regexp '[[:digit:]]{2}';/*数字连续出现两次*/ 2. select prod_name from products where prod_name regexp '^[0-9\\.]';/*以0-9 .开始*/ 3. select prod_name from products where prod_name regexp '[0-9\\.]$'; /*以0-9 .结束*/ 4. select prod_name from products where prod_name regexp '[[:<:]]jet';/*以jet开始*/ 5. select prod_name from products where prod_name regexp '0[[:>:]]';/*以0结尾*/ 4. 计算字段相关: 1. 函数的使用 1. concat()函数来拼接两个或多个列(其他的dbms使用+或者||来实现拼接) 1. select concat(vend_name, ' (', vend_country ,') ') from vendors; /*各个串之间使用逗号隔开*/ 2. trim()函数: 1. rtrim() : 去掉串右边空格 2. ltrim() : 去掉串左边空格 3. trim() : 去电串两边空格 2. 使用别名 1. as的使用,别名用在计算字段或者不规则字段等的重命名 3. 算数计算: 1. mysql的算数运算符有加减乘除(+-*/) 5. 数据处理函数 1. 文本处理函数 1. trim() : 去掉两边空格 2. upper() : 将文本转化为大写 3. left() : 返回串左边的字符 4. length() : 返回串的长度 5. locate() : 找出串的一个子串 6. lower() : 将串转化为小写 7. ltrim() : 去掉串左边空格 8. right() : 返回串右边字符 9. rtrim() : 去掉串右边空格 10. soundex() : 返回串的soundex值,描述其语音表示的字母数字模式的算法 1. 简单的来说就是匹配发音相似的内容 11. substring() : 返回子串的字符 12. upper() : 将串转化为大写 2. 常用日期和时间处理函数(mysql中的日期格式为yyyy-mm-dd) 1. adddate() : 增加一个日期(天,周等) 2. addtime() : 增加一个时间(时,分等) 3. curdate() : 返回当前日期 4. curtime() : 返回当前时间 5. date() : 返回日期时间的日期部分(仅仅想要日期比较,就用date()函数) 6. datediff() : 计算两个日期之差 7. date_add() : 高度灵活的日期运算函数 8. date_format() : 返回一个格式化的日期和时间串 9. day() : 返回一个日期的天数部分 10. dayofweek() : 对于一个日期,返回对应的星期几 11. hour() : 返回一个时间的小时部分 12. minute() : 返回一个时间的分钟部分 13. month() : 返回一个日期的月份部分 14. now() : 放回当前日期和时间 15. second() : 返回一个时间的秒部分 16. time() : 返回一个日期时间的时间部分 17. year() : 返回一个日期的年份部分 3. 数值处理函数 1. abs() : 返回一个数的绝对值 2. cos() : 返回一个角度的余弦 3. exp() : 返回一个数的指数值 4. mod() : 返回除操作的余数 5. pi() : 返回圆周率 6. rand() : 返回一个随机数 7. sin() : 返回一个角度的正弦 8. sqrt() : 返回一个数的平方根 9. tan() : 返回一个角度的正切 4. 日期例子: 1. 日期的等值比较 : select cust_id, order_num from orders where date(order_date) = '2005-09-01'; 2. 日期的区间比较 : select cust_id, order_num from orders where date(order_date) between '2005-09-01' and '2005-09-30'; 3. 日期的区间比较优化 : select cust_id, order_num from orders where year(order_date) = 2005 and month(order_date) = 9; 6. 汇总数据: 1. 聚集函数 1. avg() : 返回某列的平均值(忽略值为null的行) 2. count() : 返回某列的行数 3. max() : 返回某列的最大值(忽略值为null的行) 4. min() : 返回某列的最小值(忽略值为null的行) 5. sum() : 返回某列值之和(忽略值为null的行) 2. 例子 : 1. 返回商品的平均价格,排除相同价格:select avg(distinct prod_price) as avg_price from products where vend_id = 1003; 2. 返回商品的总数,商品的最大值,商品的最小值,商品的平均值:select count(*),min(prod_price) as min_price,max(prod_price) as max_price,avg(prod_price) as avg_price from products; 7. 分组数据 1. group by 和 having 1. group by子句不能是聚集函数和别名 2. having是用来过滤分组的 2. 查询子句的顺序 1. select * from tab_name where group by .. having .. order by.. limit
如对本文有疑问, 点击进行留言回复!!
MySQL-关系代数-并、交、差、等值连接、自然连接、左连接。。。
网友评论