一、Mysql下载链接
官网下载地址:https://dev.mysql.com/downloads/mysql/
二、连接本地数据库
a.通过cmd启动mysql.exe。
第一步点击“win+R”,打开运行,在运行输入框里面输入"cmd"
第二步在命令行输入net start mysql,如果已配置好环境,则可直接输入
mysql -hlocalhost -P3306 -uroot -p123
其中:-h:地址 ;-P:端口 ;-u:用户;-p:密码
b.图形化管理工具:SQLyog
第一步打开sqlyog。点击文件-新链接,打开“链接我的sql主机”
第二步点击界面新建,命名新链接,输入密码与数据/库,点击链接
注:为方便查看,以下内容以sqlyog执行界面展示
三、创建表
格式说明:
create table tbl_name(列结构)[表选项]
实践:
USE zsy1;
CREATE TABLE persons
(
cust_id INT NOT NULL AUTO_INCREMENT,
cust_name CHAR(50) NOT NULL,
cust_address CHAR(50) NULL,
cust_city CHAR(50) NULL,
cust_state CHAR(5) NULL,
cust_zip CHAR(10) NULL,
cust_country CHAR(50) NULL,
cust_contact CHAR(50) NULL,
cust_email CHAR(255) NULL,
PRIMARY KEY(cust_id)
)ENGINE=INNODB;
说明:
· 字段使用NOT NULL属性,是为了保证字段的值不为NULL。这样,当用户尝试创建具有NULL值的记录, MySQL就会报错。
· 字段的AUTO_INCREMENT属性告诉MySQL自动增加id字段为下一个可用编号。也可以理解为:是为了给每条记录提供给一个唯一的标识。每次插入记录时,将某个字段的值自动增加。
· 关键字PRIMARY KEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。主键是唯一的。
四、插入完整的行
格式说明:
insert into 表名(字段列表)values (值列表);
实践:
INSERT INTO customers (cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES
('1', 'z1', '001', 'tianjin', 'tj', '301508', 'tianjin', NULL, NULL);
说明:
单行插入,插入一个新客户到customers表。存储到每个表列中的 数据在VALUES子句中给出,对每个列必须提供一个值(插入到表中每个列的数据在VALUES子句中给出,对于指定的列,每个列必须提供一个值。)如果某 个列没有值(如上面的cust_contact和cust_email列),应该使用NULL 值(假定表允许对该列指定空值)。
· 多行插入
格式说明:
insert into 表名(字段列表)
values (值列表),(值列表),(值列表)…(值列表);
实践:
INSERT INTO customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES('2', 'z1', '西里路53号', '天津', 'tj', '301508', '天津', NULL, NULL),
('3', 'z2', '东里路53号', '北京', 'bj', '300508', '北京', NULL, NULL),
('4', 'z3', '北里路53号', '南京', 'nj', '300508', '南京', NULL, NULL)
;
· 批量插入行
实践:
CREATE TABLE foli_age(
id INT(11) NOT NULL AUTO_INCREMENT,
VALUE INT(5) NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
INSERT INTO foli_age(VALUE)
VALUES (1), (2), (3), (4), (5), (6);
CREATE TABLE account1(
id INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
INSERT INTO account1( NAME )
SELECT
CONCAT( 'name', @nownum := @nownum + 1 )
FROM
foli_age AS a,
foli_age AS b,
foli_age AS c,
foli_age AS d,
( SELECT @nownum := 0 ) AS e
WHERE a.VALUE = 1 AND b.VALUE =2 AND c.VALUE = 3;
说明:
· @nownum表示的是一个变量 @newnum:=0表示变量@newnum的起始值是0,也就是第一行测试数据的name属性是name1。
· concat(str1,str2)是mysql的函数是str1和str2拼接成一个字符串。
· 数据的数目和foli_age行的数目有关。数据的行数就是foli_age的数量的次方。而本例子中是四个foli_age,而每个sample表中有6条数据,如果无where语句,运行结果将输出666*6共1296条数据。
· where语句给了abc的value值,a代表第一行,b代表第二行,c代表第三行,d无value值,表示表6行数据。
五、mysql中增加一列
格式说明:
alert table表名column 列名称 数据类型 not null
· 已建好的表增加一列
alter table account add column age varchar(45) not null;
· 已建好的表增加一列,这一列在name最后一列
alter table account add column sex varchar(45) not null after name;
· 添加新列到首列
alter table account add column phone varchar(45) not null first;
六、删除数据
· 删除指定行
格式说明:
DELETE FROM 表名 WHERE 范围’;
实践:
DELETE FROM customers WHERE cust_id = '1';
· 删除sample所有数据
格式说明:
DELETE FROM 表名;
实践:
DELETE FROM foli_age;
七、修改数据
·修改表字段名
格式说明:
ALTER TABLE 表名称CHANGE 表字段名(旧)表字段名(新)数据类型;
实践:
ALTER TABLE account CHANGE name new_name char(50);
·修改表里的数据内容
格式说明:
UPDATE 表名称 SET 表字段名(旧) =“表字段名(新)” WHERE范围;
实践:
UPDATE account SET new_name ="new_name" WHERE id=1;
八、重命名表
格式说明:
RENAME TABLE 表名(旧)to 表名(新);
实践:
RENAME TABLE persons to acount;
九、简单查询数据
·查询表account全部数据
格式说明:
select * from 表名;
实践:
select * from account1;
·选择查询
格式说明:
select * from 表名 where 范围
实践:
select * from customers where cust_id=1;
·查找(百分号(%)通配符)
格式说明:
select字段列表1,字段列表2 from 表名
where 字段列表 like “%匹配字符%”;
实践:
select cust_id,cust_name,cust_address from customers
where cust_address like "%路%";
说明:
搜索模式’%路%'表示匹配任何位置包含文本“路”的值,而
不论它之前或之后出现什么字符。
·正则表达式搜索
格式说明:
select 字段列表1,字段列表2 from 表名
where字段列表 regexp “匹配字符”
order by 字段列表(排序);
实践:
select cust_id,cust_name,cust_address from customers
where cust_address regexp "53"
order by cust_name;
·or 匹配
格式说明:
select 字段列表1,字段列表2 from 表名
where字段列表 regexp “[x|y]”
order by 字段列表(排序);
实践:
select cust_id,cust_name,cust_address from customers
where cust_address regexp "52|53"
order by cust_name;
·匹配范围
格式说明:
select 字段列表1,字段列表2 from 表名
where字段列表 regexp “[x-y]”
order by 字段列表(排序);
实践:
select cust_id,cust_name,cust_address from customers
where cust_address regexp "[1-3]"
order by cust_name;
说明:
正则表达式[1-3],[1-3] 定义了一个范围,这个表达式意思是匹配1到3。
·匹配特殊字符
格式说明:
select 字段列表1,字段列表2 from 表名
where字段列表 regexp “\$”
order by 字段列表(排序);
实践:
select cust_id,cust_name,cust_address from customers
where cust_address regexp "\\$"
order by cust_name;
说明:
\.匹配.,只检索出一行。这种就是所谓的转义(escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义。
十、几个简单的基本的sql语句
select * from 表名 where field1 like ’%value1%’ ; – 查找
select * from 表名 order by field1,field2 [desc]; – 排序
select count as 需要统计总数的字段名 from 表名; – 总数
select sum(field1) as sumvalue from 表名; – 求和
select avg(field1) as avgvalue from 表名; – 平均
select max(field1) as maxvalue from 表名; – 最大
select min(field1) as minvalue from 表名; – 最小