1.一般的なデータ型
整数:int型、ビット、TINYINT(-128-127レンジ符号付き、符号なしの範囲:0〜255)
小数:例えば小数として(浮動小数点数で表される)小数、(5,2)が共存5桁の10進アカウンティングを示し、2
ストリング:VARCHAR(可変長)、CHAR
日付時刻:日付(XX年--xx月--xx日)、時間、日時(XX年時に--xx月の日--xx:分:秒)
列挙型:列挙型
注:大規模なテキストを格納する文字列のテキスト表現、文字は4000推奨よりも大きく、
2.一般的なデータベース操作
1. Connectデータベース
1.cmdでデータベースに接続します
MySQLの-uルート(アカウント)-pパスワード
2.直接起動mysqクライアント
[スタート] - >出力はmysql->私のSQLクライアントを起動します
2.終了データベース
出口
3.データベースの表示とは何ですか
データベースを表示します。
現在使用中のデータベースを確認してください4。
データベースを選択();
5.データベースを使用して
データベース名を使用します。
6.画面のデータベースのバージョン
バージョンを選択します()
図7は、現在時刻
今選択します()
データベースを作成します8.
データベース+データベース名を作成します。
データベース+データベース名のcharset = UTF8を作成; - UTF8に指定する文字セットフォーマットを
9.データベース文の作成
データベース+データベース名を作成して表示し、
10. [データベースの削除
データベースのデモをドロップ。
11.検索機能
?関数;
12. [データベースのバックアップ
mysqldumpを-uルート-pパスワード+データベース名> .SQL名
注:MySQLの接続を終了する最初の
13回復用データベース
MySQLの-uroot -pパスワード+データベース名<SQLファイル
表3.データ操作
データベースで1レビュー現在のすべてのデータテーブル
テーブルを表示します。
テーブルを作成します。2.
構文:データシート+テーブル名を作成します(フィールド名フィールドタイプフィールドの制約)
例えば:(テーブルの学生を作成します
識別符号なし整数の主キーAUTO_INCREMENT、 - フィールドIDを追加する、符号なし整数、主キー、自動インクリメント
名前のVARCHAR(6)NOT NULL、 - 名前が空ではありません
年齢TINYINT、符号なしデフォルト0、 - 默认0
高小数(5,2)、 - 2進整数を占め3
男女列挙型(「男性」、「女性」、「秘密」)デフォルトの「秘密」 - 注:最後の1を追加しないでください、いいえ
);
3.作成した表を見ます
テーブル+テーブル名を作成して表示し、
テーブル構造を確認4.
DESC +テーブル名;
修飾されたテーブル構造ALTER +追加/変更(修正フィールドタイプ)/変更/ drog(フィールド名およびタイプを変更)(削除)
1. [追加]フィールドが存在しません。
構文:ALTERテーブル+テーブル列名型アド/制約
例えば:ALTER TABLE学生のアドオン誕生日の日時デフォルト「2020年2月16日午前11時11分11秒」 - 誕生日のフィールドを追加し、日時タイプ
2. [変更現在フィールドタイプ
構文:ALTER変更テーブル+テーブル列名タイプ/制約
例えば:ALTER TABLEの学生は、誕生日の日付のデフォルトの「2020年3月2日」を変更; - 上記の誕生日の日付フィールドタイプを変更します
3.変更したフィールド名とタイプ
構文:ALTERテーブル変更列+テーブル名タイプ/制約
例えば:ALTER TABLEの学生の変化の誕生日BIR日付デフォルト「2020年3月2日には、」; - 誕生日のフィールドBIRを変更します
4. [変更のテーブル - [削除]フィールド
構文:ALTER TABLEドロップ+ +テーブル名、フィールド名;
例えば:ALTER TABLEの学生ドロップBIR。 - 删除BIR
6. [削除]テーブル
構文:テーブル+テーブル名をドロップ
例えば:ドロップテーブルの学生; - 削除学生テーブル
で7.mysqlコメント
使用 - 注釈へ
4.データの追加、削除、変更、操作
A.増加挿入
1.全行挿入:テーブル値への挿入(値1、値2、......)
機能:順序値対応テーブルとフィールドは、挿入がすべての値を含むデータフィールドを挿入します
例えば:学生値への挿入(0、「備」、22) - 列の完全な使用は表と1対1の対応に、挿入されるので、テーブルは、3つのフィールドが含まれている場合
注意:
1.ここでは、自動インクリメントの使用のidフィールドには、プレースホルダを使用することが可能です
2.プレースホルダ:のみ使用する主キー、上記実施形態では、主キーのID、0プレースホルダ三つの形式、デフォルトは、NULLがあります
2.指定された列:テーブルへの挿入(カラム1、......)の値(値1、......)
:機能指定された列に挿入するためおよび列対応し、
例えば:学生への挿入(名前、年齢)の値( '张飞'、23);
前記複数行の挿入(一括挿入):テーブル名への挿入(カラム1、...)の値(値1、...)、(1の値、...)、...
特長:複数のデータの挿入
例えば:
学生値に1.insert(デフォルト、 '朱豚'、22、 'M')、(デフォルト、 'ルバニ'、23、 'M')。
学生への2.insert(名前、年齢、性別)の値( '周瑜'、23、 'M')、( 'Yaojin'、25、 'M');
第二に、削除、更新
1. 構文:更新テーブルの設定値= 1つの列1、列2の値= 2、... [条件]
注:条件は、それ以外の場合は、フルテーブルの更新となりどこに配置する必要があります
例えば:アップデート学生のセットのセックス=「M」名=「関」;
第三に、削除します(物理削除)
1. 文法:テーブルから削除[]条件
注意:あなたが条件を配置する必要があり、そうでなければあなたは右足をお待ちしております(手動おかしいです)
例えば:ID = 1学生から削除します。
第四には、クエリを選択します
1.クエリすべての列
構文:テーブル名からSELECT * +
例えば:学生から*選択します。
クエリのフィールドを指定します。2.
構文:SELECT列1、列2、.....テーブルから
例えば:選択名前、年齢、学生から。
フィールドクエリへの別名として1.
例えば:学生からの年齢などの名前、年齢などを選択名;別名から--name名前
2.sqlの完全な形(表を持参するマルチテーブルクエリを実行)
例えば:選択demo.student.name、学生からdemo.student.age; --demo学生テーブルデータベース、省略することができます
遊びにテーブルの別名として3.
例えば:選択student.name、学生からstudent.age。可以写为s.nameを選択し、Sなどの学生からs.age。
4.明確な排除の重複行
例えば:学生からの明確なセックスを選択します。
注:個別の後に複数のフィールドがある場合、クエリの結果がある場合にのみ、同一の複数列のクエリが重い行くことができます
例えば:学生からの明確な性別、年齢を選択します。
クエリWHERE条件を指定してください。3.
1.比較演算子>、<、> =、<=、!=
例えば:
1.クエリの学生時代の18年以上
学生から選択*どこ年齢> 18;
2. 2つの表現「を意味するものではありません」
学生から選択*どこ年齢= 18!; または年齢<> 18学生から*選択します。
2.論理演算子と、しない(非)(に)、又は(または)
例えば:
1.select *学生からどこ年齢> 18と性別=「女性」; - クエリ以上の18歳の少女
2.select * from student where age not 18 -- 年龄不是18岁的学生
3.select * from student where age > 18 or height > 180; -- 查询年龄 > 18 并且 身高 > 180的学生
3.模糊查找 like
1.% 表示任意字符可有可无
eg:
1.查询名字中 以 “小” 开始的名字
select * from student where name like '小%';
2.查询名字中包含 华 的名字
select * from student where name like "%华%"
2._ 表示任意一个字符
eg:
1.查询有两个字的名字
select * from student where name like "__";
2.查询有三个字的名字
select * from student where name like "___";
Note:sql还可以使用正则表达式来进行查询
eg: select * from student where name rlike "^刘";
4.范围查找 in、between、
1.in 表示在一个非连续的范围中(列举式)
eg :
(1).select * from student where age in (18,20,30); -- 查询年龄为18、20、30的学生
(2). select * from student where age not in (18,20,30); -- 年龄不是18,34岁学生的信息
Note: not in 表示不在非连续的范围内
2.between ... and ... 表示在一个连续的范围内,两端都包含
eg:
(1).select * from student where age between 18 and 25; -- 查询年龄在18-25之间的学生
(2).select * from student where age not between 18 and 25; --查询年龄不在18-25岁之间的学生
Note: not between ... and ... 表示不在一个连续的范围内
5.空判断 null 不能够使用比较运算符
eg : select * from student where height is null;
6.排序 asc 、desc
语法: order by + 字段 + desc/asc(默认就是升序排序,所以 asc可以省略)
1.asc 从小到大排序,即升序
eg: select * from student order by age ; --按年龄从小到大排序
2.desc 从大到小排序,即降序
eg: 1.select * from student order by age desc; --按年龄降序排列
2.select * from student order by age asc, height desc; --按照年龄进行升序排序,如果年龄相同,则按照身高进行降序排序
Note:一般先进行筛选,在进行排序
7.聚合函数 count() 、sum()、max()、min()、avg()(作统计用)
语法:
1.count(*) 以行为单位来统计个数
eg: select count(*) from student; --统计班级总共的人数
Note: 也可以使用 select count (id) from student; --只不过效率比第一种低,count () 用来统计非空字符,如果统计列字段有为空的,则不会统计非空那行
2.max() 用来查找最大值
eg:select max(age) from student; -- 查询最大的年龄
3.select 语句的嵌套 --> 子查询
eg: select name from student where height = (select max(height) from student); -- 查询身高最高的学生姓名,Note: 加上 () ,表示优先执行
4.sum() 求总和
eg: select sum(age) from student; -- 查询所有学生年龄总和
5.avg() 求平均值
eg: select avg(age) from student; -- 查询所有学生年龄的平均值
6.round() 四舍五入
eg: round(select avg(age) from student,) --查询学生的平均年龄,并保留两位小数
Note:round()函数中含有两位操作数,第一个参数传入要进行取舍的函数,第二个用来传入要取舍的位数
8.分组 group by(分组的目的就是为了做聚合统计)
eg: select sex from student group by sex;-- 按照性别进行分组
1.先分组,后聚合
eg:1.select sex,count(*) from student group by sex; --计算每种性别的人数(聚合函数只会作用在分组之后的数据上)
2.concat () 可以将字符串进行拼接
select sex,group_concat(name) from student group by sex; -- 查询每个性别分组数据中人的姓名
.3.使用having 条件筛选,表示对于已经分组的数据做进一步的筛选
Note:对分组后的数据进一步的筛选只能用 having ,不能用 where
eg: 1.计算男性的人数
1).不使用聚合 select count(*) from student where sex = "男";
2).使用聚合 select sex,count(*) from student groupby sex having sex = "男";
注:having 和 where 的区别:1.having 表示对已经分组的数据做进一步的筛选,有having就一定有group by,有group by不一定有having ; where 是对源数据做筛选操作
2.计算每种性别的平均年龄
select sex,avg(age) from student group by sex;
3.查询平均年龄超过25岁的性别,以及姓名
select sex,group_concat(name) from student group by sex having avg(age) > 25;
4.查询每种性别中年龄最大的前几位
select sex,substring_index(group_concat(age order by age desc),',',2) from student group by sex;
Note:出题频率很高
8.分页 limit,start,count,
语法:select 字段 + 表名 +limit start(数值),count(数据); 1)start 表示从哪里开始查询,默认值为0,可以省略,可以理解为跳过多少条数据
2)count 表示查询多少条
eg : select * from student limit 0,4;
Note: sql 语句结构 与优先级
重点:sql语句执行的顺序:
1.from 表名
2.where ....
3.group by ......
4.select distinct
5.having .....
6.order by ......
7.limit,start,count
9.连接查询
1.连接查询:将两个表按照某种条件合并在一起
1)-笛卡尔积查询,有可能产生庞大的中间表
查询学生的姓名和对应的班级姓名(学生姓名在学生表中,班级姓名在班级表中)
select * from student,class where student.cls_id = class.id;
2)内连接查询(语法): table1 inner join table2 on 条件, 设置内连接条件,内连接:将满足连接条件的两张表合并成一张表
eg: 上例 select student.name, class.class_name from student inner join class on student.cls_id = class.id;
取别名: select s.name, c.class_name from student as s inner join class as c on s.cls_id = c.id;
3) 外连接查询 left join + right join 外连接:分主表和次表,由于现在是左外连接,左边表示的是主表,主表的数据全部显示(满足条件和不满足条件的都显示,不满足连接条件的以NULL填充)
left join 左外连接查询
eg: select s.name, c.class_name from student as s leftjoin class as c on s.cls_id = c.id;
right join 右外连接查询
10.自关联
例子声明: 将省、市、区、县放于一张表中,设置pid、id、atitle字段,pid用来存储上级字段
eg: 查询出广东省有多少个市
Note:想向成多张表,例如本例中将areas想象成两张表,一张省表,一张市表
select p.atitle,c.atitle from areas as p inner join areas as c on p.aid = c.pid where p.atitle = "广东省";
11.子查询
1.概念:在一个select语句中,嵌入了另外一个select语句,那么嵌入的select 就被称为子查询语句
2.主查询和子查询的关系
1)子查询是嵌入到主查询中
2)子查询是辅助主查询的,要么充当条件,要么充当数据
3) 子查询是可以独立存在的语句,是一条完整的select语句
eg: 查询身高最高的学生名字
select name from student where height = (select max(height) from student);
3.子查询语句根据查询的结果可以分为4种类型的子查询
1)标量子查询:子查询语句查询的结果是一行一列(就是一个最基本的语句)
例えば:高さ=(選択最大(学生からの高さ))の学生から[名前。
2)カラムレベルのサブ問合せ:サブクエリの結果は、クエリつ以上の行であります
例えば:(18,20,30)で、学生からどこ年齢*選択---(サブクエリの中へ)年齢(学生18,20,30における頃から年齢を選択)ここで、学生から選択*;メインクエリをチェックします学生はすべての情報は、サブクエリは、クエリは、18、20の年齢を満たしています
3)行レベルのサブクエリ:行レベルのサブクエリは、線要素を構築するために必要
行要素は:フィールドに合わせた行要素の複数行サブクエリの行要素がで使用されます
例えば:クラスで最も古い学生のクエリ最高高さ
選択*学生からここで、(学生の)MAX(年齢を選択し、最大(高さ))(年齢、身長)=;
注:1つの要素の行にまとめここでは、年齢や身長
4)表レベルのサブクエリをクエリの結果は、行と列であり、データ・ソースとして作用します
例えば:学生からの選択*; - stu_tableとして(学生SELECT * FROM)から(テーブルレベルにサブクエリ)を選択します*;