《mysql必知必会》基础实践

一、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:密码
《mysql必知必会》基础实践
b.图形化管理工具:SQLyog
第一步打开sqlyog。点击文件-新链接,打开“链接我的sql主机”
第二步点击界面新建,命名新链接,输入密码与数据/库,点击链接
注:为方便查看,以下内容以sqlyog执行界面展示
《mysql必知必会》基础实践《mysql必知必会》基础实践
三、创建表
格式说明:
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用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。主键是唯一的。《mysql必知必会》基础实践
四、插入完整的行
格式说明:
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);

《mysql必知必会》基础实践
说明:
单行插入,插入一个新客户到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)
;

《mysql必知必会》基础实践· 批量插入行
实践:

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必知必会》基础实践
五、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;

《mysql必知必会》基础实践
六、删除数据
· 删除指定行
格式说明:
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);

《mysql必知必会》基础实践
·修改表里的数据内容
格式说明:
UPDATE 表名称 SET 表字段名(旧) =“表字段名(新)” WHERE范围;

实践:

UPDATE account SET new_name ="new_name" WHERE id=1;

《mysql必知必会》基础实践八、重命名表
格式说明:
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 "%路%"; 

说明:
搜索模式’%路%'表示匹配任何位置包含文本“路”的值,而
不论它之前或之后出现什么字符。
《mysql必知必会》基础实践
·正则表达式搜索
格式说明:
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;

《mysql必知必会》基础实践
·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;

《mysql必知必会》基础实践
·匹配范围
格式说明:
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。
《mysql必知必会》基础实践
·匹配特殊字符
格式说明:
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),正则表达式内具有特殊意义的所有字符都必须以这种方式转义。
《mysql必知必会》基础实践《mysql必知必会》基础实践
十、几个简单的基本的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 表名; – 最小

上一篇:Mybatis实现插入数据的时候将主键赋值给对象的两种方法


下一篇:JPA