用MySQL创建数据库和数据库表(仅针对已经安装好mysql)
win+R以管理员身份运行命令行cmd
输入mysql -h localhost -u root -p然后输入mysql password
①设置SQL语句的编码格式
②删除数据库test
③创建数据库test,指定存储数据所用的编码
④进入数据库
⑤创建表 dd_category(cid, cname, count)//count为书籍数量
⑥添加三行记录,三个书籍分类(10/20/30)
⑦查询出所有的书籍分类
⑧创建表 dd_book(bid,title,pic,price,pubDate,isOnsale,categoryId)
⑨为每种分类添加两三条记录
⑩查询出所有的书籍
⑪查询出所有的“category1”类书籍
⑫删除10号分类及其下所有的书籍
⑬删除编号为6的书籍,需要修改对应分类的书籍数量
查看当前有哪些数据库:show databases;(以分号结尾表示一个sql语句)
这四个数据库是mysql自带的数据库,与mysql的功能有关,建议不要轻易修改。
创建一个数据库dbone,输入sql语句:create database dbone;
创建完后用show databases;查看数据库发现创建成功。
进入刚才创建的数据库dbone,对数据库进行管理:
use dbone;
查看数据库dbone中的数据库表:shoe tables;
显示为empty set;无数据库表
为数据库dbone创建数据库表
create table stu(sno varchar(20),sname varchar(20));
查看数据库dbone的数据库表:show tables;
查看数据库表stu的结构:describe stu;
查看stu数据库表中的数据:select * from stu;
stu为空empty的表格
往表格中添加内容:insert into stu values(‘2099001001001’,’cjf’);
数据库表stu成功添加两个数据。
但是每次往数据库表添加一个记录就要执行一个sql语句,当数据非常大的时候这种往数据库表添加数据的方法根本行不通,可以通过文本方式将数据添加到数据库表:
创建文本stu.txt用tab隔开数据,一行代表一个数据,数据元素要按照数据库表的结构排列:
记住文本stu.txt的绝对路径(D:\stu.txt)
执行sql语句:load data local infile“d:\stu.txt” into table stu;
文本stu.txt五个数据顺利添加到数据库表stu;
当然现在大部分数据都是用excel编写,如何将后缀名为xlsx文件导入sql数据库表?
首先打开excel写入数据:
因为excel编码格式为ANSI
右击文件名-另存为,如下图:
点击文件类型选择csv(逗号分隔),保存在d:\stu.csv
执行sql语句:load data local infile“d:\stu.csv” into table stu fields terminated by ‘,’;
fields terminated by ‘,’;表示以逗号分隔数据值,从刚才选的文件类型csv(逗号分隔)可知数据值是以’,’分隔的。
查看数据表:可以看到数据库表stu又添加了三个数据。
查询数据库表stu中学号为2099001001001的数据
删除数据库表stu中学号为2099001001001的数据
如图,表中存在重复的数据,如果想要仅仅列出不同的值,可以使用关键字distinct
select distinct 列名 from stu;
如图,输出的列sno没有出现重复的值。
以上是适应于在一条命令执行完后再执行下一条命令,当有多条命令需要连续执行时,或者有些命令动作是连续的并且多次用到,每次重复输入显得相当麻烦,这个时候可以将命令写在sql文本里面,然后直接在mysql执行sql文本。
①在D盘下sql文件夹创建sql文件TEST.SQL(D:\SQL\TEST.SQL),写入要执行的多条sql语句
#1. 设置SQL语句的编码格式
set names utf8;
#2. 删除数据库test
drop database if exists test;
#3. 创建数据库test,指定存储数据所用的编码
create database test charset=utf8;
#4. 进入数据库
use test
#5. 创建表 dd_category(cid, cname, count)//count为书籍数量
create table dd_category(
cid int primary key,
cname varchar(32),
count int
);
#6. 添加三行记录,三个书籍分类(10/20/30)
insert into dd_category values
(‘10’,’category1’,’2’),
(‘20’,’category2’,’2’),
(‘30’,’category3’,’2’);
#7. 查询出所有的书籍分类
select * from dd_category;
#8. 创建表 dd_book(bid,title,pic,price,pubDate,isOnsale,categoryId)
create table dd_book(
bid int primary key,
title varchar(32),
pic varchar(32),
price float(6,2),
pubDate date,
isOnsale boolean,
categoryId int
);
#9. 为每种分类添加两三条记录
insert into dd_book values
(‘1’,’title1’,’img/pic1.jpg’,’11.11’,’2017-10-10’,’1’,’10’),
(‘2’,’title2’,’img/pic2.jpg’,’1912’,’2017-10-11’,’1’,’10’),
(‘3’,’title3’,’img/pic3.jpg’,’18.13’,’2017-10-11’,’1’,’20’),
(‘4’,’title4’,’img/pic4.jpg’,’17.14’,’2017-10-9’,’1’,’20’),
(‘5’,’title5’,’img/pic5.jpg’,’7.15’,’2017-10-6’,’1’,’30’),
(‘6’,’title6’,’img/pic6.jpg’,’9.14’,’2017-10-7’,’0’,’30’);
#10. 查询出所有的书籍
select * from dd_book;
#11. 查询出所有的“计算机”类书籍
select * from dd_book where categoryId = (
select cid from dd_category where cname=’计算机’
);
#12. 删除10号分类及其下所有的书籍
delete from dd_category where cid = 10;
delete from dd_book where categoryId=10;
#13. 删除编号为6的书籍,需要修改对应分类的书籍数量
update dd_category set count=count-1 where cid = (
select categoryId from dd_book where bid=6
);
delete from dd_book where bid =6;
除了设置sql语句编码格式以及存储数据所用的编码格式,还需要设置sql脚本的编码格式,否则会出现中文乱码等问题,方式如下:
点击左上方文件选择另存为
编码格式选择UTF-8 ,再点击保存,替换掉源文件
在DOS中如果出现中文乱码等,需要设置DOS的编码格式:chcp 936(简体中文字符集)
运行sql脚本文件有两种方式:
①在未登录mysql之前:mysql -uroot -p < e:/x.sql
②在登录mysql之后:source e:/x.sql
sql脚本运行成功。