创建数据库
CREATE DATABASE db_admin;
查看当前所在数据库
select database();
修改数据库
ALTER {DATABASE} [数据库名] [DEFAULT] CHARACTER [=] 字符集 |[DEFAULT] COLLATER[=] 较对规则名称
删除数据库
DROP DATABASE IF EXISTS 数据库名称;
查询存储引航
SHOW ENGINES;
MySQL表
创建表
CREATE TABLE customers (userid int NOT NULL AUTO_INCREMENT,name char(50) NOT NULL,address char(200) NOT NULL,email char(50) NOT NULL, PRIMARY KEY(userid) );
查看表
SHOW TABLES
查看表详细信息
SHOW CREATE TABLE table_name
查看表结构
DESC 数据表名;
添加新字段(列)
ALTER ATABLE students ADD age int DEFAULT 0
ALTER ATBLE students ADD (gender int default 0,phonenum int(11) );
修改字段名(列)
ALTER TABLE 表名 CHANGE 字段名 新字段名 数据类型;
删除字段名(列)
ALTER TABLE students DROP phone;
修改表名
ALTER TABLE oldtable RENAME AS newtable;
重命名表
RENAME TABLE 数据库表名1 To 数据库表名2
删除表
DROP TABLE [IF EXISTS] 数据库表名;
复制表
CREATE TABLE [IF NOT EXISTS] 数据表名 LIKE 源数据表名
增(insert into)
- 插入完整的行;
- 插入行的一部分;
- 插入多行;
- 插入某些查询的结果
插入完整行
INSERT INTO customers values(10010,'小明','北京','1234567@qq.com')
查询已插入的数据
SELECT * FROM customers;
根据列插入数据
INSERT INTO customers(userid,name,adress,email)values('10011','小明','北京','1234567@qq.com')
删除数据
DELECT FROM customers WHERE userid = 10010;
改
UPDATE customers SET email='123@sina.com' where userid=10011;
检索单个列
SELECT 列名 FROM 表名;
检索多个列
SELECT 列名,列名,列名,列明....FROM 表名;
检索所以列
SELECT * FROM 表名;
检索不同的行
SELECT DISTINCT 列名 FROM 表名;
使用完全限定的表名
SELECT 表名.列 FROM 表名;
=等于
select name from customers where name='小明';
<>不等于
select name from customers where name<>'小明';
!=不等于
select name from customers where name!='小明';
<小于
select name from customers where name<'小明';
<=小于等于
select * from customers where userid<=10014;
>大于
select * from customers where userid>10014;
>=大于等于
select * from customers where userid>=10014;
match方法
导入re模块
import re
result = re.match(正则表达式,要匹配的字符串)
result.group()
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,既0-9
\D 匹配非数字,既不是数字
\s 匹配空白,既 空格,tab键
\S 匹配非空白
\w 匹配单词字符,既a-z,A-z,0-9,_
\W 匹配非单词字符
[ ]的使用
ret=re.match("[hH]","hello python") print(ret.group())
使用\d进行匹配
ret = re.match("嫦娥\d号","嫦娥1号发射成功")
使用\D进行匹配
ret = re.match("\D娥","嫦娥1号发射成功") print(ret.group())
使用\s与\S进行空格和非空格匹配
ret = re.match("\D娥\d\s\D","嫦娥1 号发射成功")
print(ret.group())
ret= re.match("\S娥\d\s\D","嫦娥1 号发射成功")
print(ret.group())
* 匹配前一个字符出现0次或者无限次,既可有可无
+ 匹配前一个字符出现1次或者无限次,既至少有1次
? 匹配前一个字符出现1次或者0次,既要么有一次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次
^ 匹配字符串开头
$ 匹配字符串结尾
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?p<name>) 分组起别名
(?p=name) 引用别名为name分组匹配到的字符串
单列排序(并指定方向)
使用ORDER BY可以对查询的结果进行排序(ASC) 和降序(DESC)排列,在默认情况下,ORDER BY按升序输出结果。如果要按降序排列可以使用DESC来实现。语法格式如下:
升序排列
SELECT age,name FROM customers ORDER BY age ASC;
降序排列
SELECT age,name FROM customers ORDER BY age DESC;
多列排序(并指定方向)
为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就像选择多个列时所做的那样)。下面的代码检测3个列,并按其中两个列对结果进行排序---首先按年龄,然后载2按名称排序。
SELECT name,adress,age From customers ORDER BY age DESC,name ASC;
查询出性别为1的学生并根据年龄进行排序升序
SELECT * FROM studentinfo WHERE gender = 1 ORDER BY age;
查询出性别为0的学生并根据年龄进行排序降序
SELECT * FROM studentinfo WHERE gender=0 ORDER BY age DESC;
限制查询
指定返回的行数
SELECT语句返回所以匹配的行,他们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT字句。下面举一个例子:
SELECT name FROM customers LIMIT 5;
指定从第几行起,返回多少行
SELECT * FROM 表名 LIMIT start,count
使用ORDER BY 和LIMIT的组合
使用ORDER BY和LIMIT的组合能够找出一个列中最高或最低的值,下面的例子演示如何找出最大的年龄的值
取最大值
SELECT name,age FROM customers ORDER BY age DESC LIMIT 1;
取最小值
SELECT name,age FROM customers OEDER BY age LIMIT1; =>SELECT name,age FROM customers ORDER BY age
聚合函数
- AVG()返回某列的平均值
- COUNT() 返回某列的行数
- MAX() 返回某列的最大值
- MIN() 返回某列的最小值
- SUM() 返回某列值之和
MAX()函数
SELECT MAX(age) FROM customers;
MIN()函数
SELECT MIN(age)FROM customers;
SUM()函数
SELECT SUM(age) as sum_age from customers;
网友评论